Full Code of AmitGolden/dotfiles for AI

main 559d0fd26a22 cached
159 files
333.4 KB
104.4k tokens
4 symbols
1 requests
Download .txt
Showing preview only (365K chars total). Download the full file or copy to clipboard to get everything.
Repository: AmitGolden/dotfiles
Branch: main
Commit: 559d0fd26a22
Files: 159
Total size: 333.4 KB

Directory structure:
gitextract__k_sodj9/

├── .config/
│   ├── Thunar/
│   │   ├── accels.scm
│   │   └── uca.xml
│   ├── btop/
│   │   ├── btop.conf
│   │   └── themes/
│   │       └── catppuccin.theme
│   ├── discocss/
│   │   ├── custom.css
│   │   └── preload.js
│   ├── dunst/
│   │   └── dunstrc
│   ├── fontconfig/
│   │   └── fonts.conf
│   ├── hypr/
│   │   ├── hyprland.conf
│   │   └── scripts/
│   │       ├── brightness_ctl.sh
│   │       ├── caffeine.sh
│   │       ├── lock.sh
│   │       ├── lock_on_sleep.sh
│   │       ├── logout.sh
│   │       ├── sleep.sh
│   │       ├── switch_kb_layout.sh
│   │       ├── toggle_bluetooth.sh
│   │       └── volume_ctl.sh
│   ├── kitty/
│   │   └── kitty.conf
│   ├── lf/
│   │   ├── colors
│   │   ├── icons
│   │   └── lfrc
│   ├── nvim/
│   │   ├── init.lua
│   │   ├── lua/
│   │   │   └── user/
│   │   │       ├── alpha.lua
│   │   │       ├── autocommands.lua
│   │   │       ├── autopairs.lua
│   │   │       ├── autotag.lua
│   │   │       ├── bufferline.lua
│   │   │       ├── cmp.lua
│   │   │       ├── colorizer.lua
│   │   │       ├── colorscheme.lua
│   │   │       ├── comment.lua
│   │   │       ├── cutlass.lua
│   │   │       ├── dap.lua
│   │   │       ├── diffview.lua
│   │   │       ├── gitsigns.lua
│   │   │       ├── illuminate.lua
│   │   │       ├── impatient.lua
│   │   │       ├── indentline.lua
│   │   │       ├── keymaps.lua
│   │   │       ├── live-command.lua
│   │   │       ├── lsp/
│   │   │       │   ├── handlers.lua
│   │   │       │   ├── init.lua
│   │   │       │   ├── mason.lua
│   │   │       │   ├── null-ls.lua
│   │   │       │   └── settings/
│   │   │       │       ├── hls.lua
│   │   │       │       ├── jsonls.lua
│   │   │       │       ├── prettier.json
│   │   │       │       ├── pyright.lua
│   │   │       │       └── sumneko_lua.lua
│   │   │       ├── lualine.lua
│   │   │       ├── nvim-tree.lua
│   │   │       ├── options.lua
│   │   │       ├── plugins.lua
│   │   │       ├── project.lua
│   │   │       ├── smart-splits.lua
│   │   │       ├── substitute.lua
│   │   │       ├── surround.lua
│   │   │       ├── telescope.lua
│   │   │       ├── testing.lua
│   │   │       ├── toggleterm.lua
│   │   │       ├── treesitter.lua
│   │   │       ├── trouble.lua
│   │   │       └── whichkey.lua
│   │   └── plugin/
│   │       └── packer_compiled.lua
│   ├── sddm-sugar-candy/
│   │   └── theme.conf
│   ├── spicetify/
│   │   ├── Extensions/
│   │   │   └── catppuccin-mocha.js
│   │   └── Themes/
│   │       └── catppuccin-mocha/
│   │           ├── assets/
│   │           │   └── .gitkeep
│   │           ├── color.ini
│   │           └── user.css
│   ├── waybar/
│   │   ├── config.jsonc
│   │   ├── scripts/
│   │   │   └── caffeine.sh
│   │   └── style.css
│   ├── wlogout/
│   │   ├── layout
│   │   └── style.css
│   ├── wofi/
│   │   ├── config
│   │   ├── style.css
│   │   └── wifi
│   ├── xfce4/
│   │   ├── helpers.rc
│   │   └── xfconf/
│   │       └── xfce-perchannel-xml/
│   │           └── thunar.xml
│   └── zsh/
│       └── catppuccin-tty.sh
├── .gitconfig
├── .gtkrc-2.0
├── .icons/
│   ├── Catppuccin-Cursor/
│   │   ├── cursors/
│   │   │   ├── all-scroll
│   │   │   ├── bd_double_arrow
│   │   │   ├── bottom_left_corner
│   │   │   ├── bottom_right_corner
│   │   │   ├── bottom_side
│   │   │   ├── bottom_tee
│   │   │   ├── cell
│   │   │   ├── center_ptr
│   │   │   ├── circle
│   │   │   ├── closedhand
│   │   │   ├── col-resize
│   │   │   ├── color-picker
│   │   │   ├── context-menu
│   │   │   ├── copy
│   │   │   ├── cross
│   │   │   ├── crosshair
│   │   │   ├── dnd-ask
│   │   │   ├── dnd-copy
│   │   │   ├── dnd-link
│   │   │   ├── dnd-move
│   │   │   ├── dnd-no-drop
│   │   │   ├── dot
│   │   │   ├── dotbox
│   │   │   ├── draft
│   │   │   ├── fd_double_arrow
│   │   │   ├── hand
│   │   │   ├── help
│   │   │   ├── left_ptr
│   │   │   ├── left_ptr_watch
│   │   │   ├── left_side
│   │   │   ├── left_tee
│   │   │   ├── link
│   │   │   ├── ll_angle
│   │   │   ├── lr_angle
│   │   │   ├── not-allowed
│   │   │   ├── openhand
│   │   │   ├── pencil
│   │   │   ├── pirate
│   │   │   ├── pointer-move
│   │   │   ├── right_ptr
│   │   │   ├── right_side
│   │   │   ├── right_tee
│   │   │   ├── row-resize
│   │   │   ├── sb_down_arrow
│   │   │   ├── sb_h_double_arrow
│   │   │   ├── sb_left_arrow
│   │   │   ├── sb_right_arrow
│   │   │   ├── sb_up_arrow
│   │   │   ├── sb_v_double_arrow
│   │   │   ├── size_all
│   │   │   ├── text
│   │   │   ├── top_left_corner
│   │   │   ├── top_right_corner
│   │   │   ├── top_side
│   │   │   ├── top_tee
│   │   │   ├── ul_angle
│   │   │   ├── ur_angle
│   │   │   ├── vertical-text
│   │   │   ├── watch
│   │   │   ├── x-cursor
│   │   │   ├── zoom-in
│   │   │   └── zoom-out
│   │   └── index.theme
│   └── default/
│       └── index.theme
├── .lessfilter
├── .local/
│   ├── bin/
│   │   ├── nvim_kitty
│   │   ├── spotify-adblock
│   │   └── wrappedhl
│   └── share/
│       └── applications/
│           ├── discord.desktop
│           ├── nvim.desktop
│           └── spotify.desktop
├── .p10k-tty.zsh
├── .p10k.zsh
├── .profile
├── .zshrc
└── README.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .config/Thunar/accels.scm
================================================
; thunar GtkAccelMap rc-file         -*- scheme -*-
; this file is an automated accelerator map dump
;
; (gtk_accel_path "<Actions>/ThunarLauncher/delete-3" "<Shift>KP_Delete")
; (gtk_accel_path "<Actions>/ThunarBookmarks/f3d2655a47ed2d96a4d42982b2dc9e6a" "")
; (gtk_accel_path "<Actions>/ThunarLauncher/delete" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/invert-selection" "")
; (gtk_accel_path "<Actions>/ThunarLauncher/open-in-new-tab" "<Primary><Shift>p")
; (gtk_accel_path "<Actions>/ThunarLauncher/delete-2" "<Shift>Delete")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/ThunarWindow/empty-trash" "")
; (gtk_accel_path "<Actions>/ThunarLauncher/open" "<Primary>o")
; (gtk_accel_path "<Actions>/ThunarWindow/reload" "<Primary>r")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/open-network" "")
; (gtk_accel_path "<Actions>/ThunarWindow/contents/help-menu" "")
; (gtk_accel_path "<Actions>/ThunarLauncher/move-to-trash" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/back-alt" "BackSpace")
; (gtk_accel_path "<Actions>/ThunarLauncher/paste" "<Primary>v")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-next-tab" "<Primary>Page_Down")
; (gtk_accel_path "<Actions>/ThunarWindow/open-file-menu" "F10")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-compact-list" "<Primary>3")
; (gtk_accel_path "<Actions>/ThunarWindow/about" "")
; (gtk_accel_path "<Actions>/ThunarWindow/open-computer" "")
; (gtk_accel_path "<Actions>/ThunarWindow/clear-directory-specific-settings" "")
; (gtk_accel_path "<Actions>/ThunarWindow/open-file-system" "")
; (gtk_accel_path "<Actions>/ThunarWindow/open-parent" "<Alt>Up")
; (gtk_accel_path "<Actions>/ThunarWindow/view-menu" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/properties" "<Alt>Return")
; (gtk_accel_path "<Actions>/ThunarLauncher/open-in-new-window" "<Primary><Shift>o")
; (gtk_accel_path "<Actions>/ThunarStandardView/back" "<Alt>Left")
; (gtk_accel_path "<Actions>/ThunarLauncher/trash-delete" "Delete")
; (gtk_accel_path "<Actions>/ThunarWindow/sendto-menu" "")
; (gtk_accel_path "<Actions>/ThunarBookmarks/032e8787b6807c1d9537dac4e85f5015" "")
; (gtk_accel_path "<Actions>/ThunarWindow/reload-alt" "F5")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-out-alt" "<Primary>minus")
; (gtk_accel_path "<Actions>/ThunarStandardView/select-by-pattern" "<Primary>s")
; (gtk_accel_path "<Actions>/ThunarStandardView/configure-columns" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/create-document" "")
; (gtk_accel_path "<Actions>/ThunarWindow/close-tab" "<Primary>w")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-tree" "<Primary>e")
; (gtk_accel_path "<Actions>/ThunarShortcutsPane/sendto-shortcuts" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/rename" "F2")
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-side-pane" "F9")
; (gtk_accel_path "<Actions>/ThunarWindow/open-home" "<Alt>Home")
; (gtk_accel_path "<Actions>/ThunarWindow/open-location-alt" "<Alt>d")
; (gtk_accel_path "<Actions>/ThunarWindow/open-templates" "")
; (gtk_accel_path "<Actions>/ThunarLauncher/execute" "")
; (gtk_accel_path "<Actions>/ThunarWindow/close-window" "<Primary>q")
; (gtk_accel_path "<Actions>/ThunarLauncher/cut" "<Primary>x")
; (gtk_accel_path "<Actions>/ThunarLauncher/sendto-desktop" "")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in-alt2" "<Primary>equal")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-toolbar" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/select-all-files" "<Primary>a")
; (gtk_accel_path "<Actions>/ThunarLauncher/open-with-other" "")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-out" "<Primary>KP_Subtract")
; (gtk_accel_path "<Actions>/ThunarStandardView/duplicate" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-shortcuts" "<Primary>b")
; (gtk_accel_path "<Actions>/ThunarWindow/edit-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/contents" "F1")
; (gtk_accel_path "<Actions>/ThunarWindow/preferences" "")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in-alt1" "<Primary>plus")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-previous-tab" "<Primary>Page_Up")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-statusbar" "")
; (gtk_accel_path "<Actions>/ThunarWindow/close-all-windows" "<Primary><Shift>w")
; (gtk_accel_path "<Actions>/ThunarWindow/open-trash" "")
; (gtk_accel_path "<Actions>/ThunarLauncher/restore" "")
; (gtk_accel_path "<Actions>/ThunarWindow/open-desktop" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/create-folder" "<Primary><Shift>n")
; (gtk_accel_path "<Actions>/ThunarWindow/open-location" "<Primary>l")
; (gtk_accel_path "<Actions>/ThunarWindow/view-menubar" "<Primary>m")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-reset-alt" "<Primary>0")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-detailed-list" "<Primary>2")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-icons" "<Primary>1")
; (gtk_accel_path "<Actions>/ThunarWindow/new-window" "<Primary>n")
; (gtk_accel_path "<Actions>/ThunarStandardView/forward" "<Alt>Right")
; (gtk_accel_path "<Actions>/ThunarLauncher/copy" "<Primary>c")
; (gtk_accel_path "<Actions>/ThunarWindow/file-menu" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/make-link" "")
; (gtk_accel_path "<Actions>/ThunarWindow/new-tab" "<Primary>t")
; (gtk_accel_path "<Actions>/ThunarWindow/go-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-pathbar" "")
; (gtk_accel_path "<Actions>/ThunarWindow/show-hidden" "<Primary>h")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-reset" "<Primary>KP_0")
; (gtk_accel_path "<Actions>/ThunarLauncher/trash-delete-2" "KP_Delete")
; (gtk_accel_path "<Actions>/ThunarWindow/detach-tab" "")


================================================
FILE: .config/Thunar/uca.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<actions>
<action>
	<icon>utilities-terminal</icon>
	<name>Open Terminal Here</name>
	<unique-id>1660516775939738-1</unique-id>
	<command>exo-open --working-directory %f --launch TerminalEmulator</command>
	<description>Example for a custom action</description>
	<patterns>*</patterns>
	<startup-notify/>
	<directories/>
</action>
</actions>


================================================
FILE: .config/btop/btop.conf
================================================
#? Config file for btop v. 1.2.12

#* 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 = "/home/amitgold/.config/btop/themes/catppuccin.theme"

#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = True

#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True

#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False

#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
#* Use withespace " " 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 = 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 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", separate values with whitespace.
shown_boxes = "cpu mem net proc"

#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 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 = "pid"

#* 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

#* 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 = "total"

#* 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 = "total"

#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True

#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False

#* Show cpu box at bottom of screen instead of top.
cpu_bottom = False

#* Shows the system uptime in the CPU box.
show_uptime = True

#* Show cpu temperature.
check_temp = True

#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"

#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = True

#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
#* Example: "4:0 5:1 6:3"
cpu_core_map = ""

#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
temp_scale = "celsius"

#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = False

#* Show CPU frequency.
show_cpu_freq = True

#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"

#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = True

#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""

#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
disks_filter = ""

#* Show graphs instead of meters for memory values.
mem_graphs = True

#* Show mem box below net box instead of above.
mem_below_net = False

#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True

#* If swap memory should be shown in memory box.
show_swap = True

#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True

#* If mem box should be split to also show disks info.
show_disks = True

#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True

#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True

#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = False

#* Set to true to show available disk space for privileged users.
disk_free_priv = False

#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True

#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False

#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False

#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
io_graph_speeds = ""

#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
net_download = 100

net_upload = 100

#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = True

#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = True

#* Starts with the Network Interface specified here.
net_iface = ""

#* Show battery stats in top right if battery is present.
show_battery = True

#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"

#* 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"

================================================
FILE: .config/btop/themes/catppuccin.theme
================================================
theme[main_bg]="#1E1E2E"
theme[main_fg]="#CDD6F4"
theme[title]="#CDD6F4"
theme[hi_fg]="#89B4FA"
theme[selected_bg]="#45475A"
theme[selected_fg]="#89B4FA"
theme[inactive_fg]="#7F849C"
theme[graph_text]="#F5E0DC"
theme[meter_bg]="#45475A"
theme[proc_misc]="#F5E0DC"
theme[cpu_box]="#74C7EC"
theme[mem_box]="#A6E3A1"
theme[net_box]="#CBA6F7"
theme[proc_box]="#F2CDCD"
theme[div_line]="#6C7086"
theme[temp_start]="#F9E2AF"
theme[temp_mid]="#FAB387"
theme[temp_end]="#F38BA8"
theme[cpu_start]="#74C7EC"
theme[cpu_mid]="#89DCEB"
theme[cpu_end]="#94E2D5"
theme[free_start]="#94E2D5"
theme[free_mid]="#94E2D5"
theme[free_end]="#A6E3A1"
theme[cached_start]="#F5C2E7"
theme[cached_mid]="#F5C2E7"
theme[cached_end]="#CBA6F7"
theme[available_start]="#F5E0DC"
theme[available_mid]="#F2CDCD"
theme[available_end]="#F2CDCD"
theme[used_start]="#FAB387"
theme[used_mid]="#FAB387"
theme[used_end]="#F38BA8"
theme[download_start]="#B4BEFE"
theme[download_mid]="#B4BEFE"
theme[download_end]="#CBA6F7"
theme[upload_start]="#B4BEFE"
theme[upload_mid]="#B4BEFE"
theme[upload_end]="#CBA6F7"
theme[process_start]="#74C7EC"
theme[process_mid]="#89DCEB"
theme[process_end]="#94E2D5"


================================================
FILE: .config/discocss/custom.css
================================================
/**
 * @name Catppuccin
 * @author Catppuccin
 * @version 0.0.8
 * @description 🎮 Soothing pastel theme for Discord
 * @website https://github.com/catppuccin
 * @source https://github.com/catppuccin/discord
 **/

:root {
	/*                 H     S     L */
	--rosewater_hsl:  10,  56%,  91%;
	--flamingo_hsl:    0,  59%,  88%;
	--mauve_hsl:     279,  70%,  83%;
	--pink_hsl:      316,  72%,  86%;
	--maroon_hsl:    349,  60%,  77%;
	--red_hsl:       342,  79%,  75%;
	--peach_hsl:      24,  88%,  78%;
	--yellow_hsl:     41,  88%,  84%;
	--green_hsl:     128,  58%,  79%;
	--teal_hsl:      171,  53%,  81%;
	--blue_hsl:      207,  93%,  79%;
	--sky_hsl:       189,  71%,  73%;
	--lavender_hsl:  238, 100%,  89%;
	--black0_hsl:    254,  25%,  10%;
	--black1_hsl:    249,  23%,  12%;
	--black2_hsl:    240,  21%,  15%;
	--black3_hsl:    249,  18%,  22%;
	--black4_hsl:    254,  12%,  36%;
	--gray0_hsl:     247,   8%,  46%;
	--gray1_hsl:     274,  11%,  59%;
	--gray2_hsl:     285,  10%,  75%;
	--white_hsl:     220,  38%,  89%;
}

:root {
	--rosewater: hsl(var(--rosewater_hsl));
	--flamingo: hsl(var(--flamingo_hsl));
	--mauve: hsl(var(--mauve_hsl));
	--pink: hsl(var(--pink_hsl));
	--maroon: hsl(var(--maroon_hsl));
	--red: hsl(var(--red_hsl));
	--peach: hsl(var(--peach_hsl));
	--yellow: hsl(var(--yellow_hsl));
	--green: hsl(var(--green_hsl));
	--teal: hsl(var(--teal_hsl));
	--blue: hsl(var(--blue_hsl));
	--sky: hsl(var(--sky_hsl));
	--lavender: hsl(var(--lavender_hsl));
	--black0: hsl(var(--black0_hsl));
	--black1: hsl(var(--black1_hsl));
	--black2: hsl(var(--black2_hsl));
	--black3: hsl(var(--black3_hsl));
	--black4: hsl(var(--black4_hsl));
	--gray0: hsl(var(--gray0_hsl));
	--gray1: hsl(var(--gray1_hsl));
	--gray2: hsl(var(--gray2_hsl));
	--white: hsl(var(--white_hsl));
	--mauve-o10: hsl(var(--mauve_hsl), .1);
	--pink-o20: hsl(var(--pink_hsl), .2);
}

.theme-dark {
	--header-primary: var(--white) !important;
	--header-secondary: var(--rosewater) !important;
	--background-primary: var(--black2) !important;
	--background-primary-alt: var(--black2) !important;
	--background-mobile-primary: var(--black2) !important;
	--background-secondary: var(--black1) !important;
	--background-secondary-alt: var(--black1) !important;
	--background-mobile-secondary: var(--black1) !important;
	--background-tertiary: var(--black0) !important;
	--background-floating: var(--black2) !important;
	--background-mentioned: var(--mauve-o10) !important;
	--background-mentioned-hover: var(--pink-o20) !important;
	--background-accent: var(--gray0) !important;
	--background-modifier-selected: var(--black2) !important;
	--background-modifier-accent: var(--black2) !important;
	--background-modifier-hover: var(--black3) !important;
	--text-normal: var(--white) !important;
	--text-muted: var(--gray0) !important;
	--text-link: var(--sky) !important;
	--channels-default: var(--gray0) !important;
	--channeltextarea-background: var(--black3) !important;
	--activity-card-background: var(--black2) !important;
	--interactive-normal: var(--white) !important;
	--interactive-muted: var(--black3) !important;
	--interactive-hover: var(--gray2) !important;
	--interactive-active: var(--rosewater) !important;
	--scrollbar-thin-thumb: var(--black0) !important;
	--scrollbar-thin-track: transparent !important;
	--scrollbar-auto-thumb: var(--black0) !important;
	--scrollbar-auto-track: var(--black3) !important;
	--scrollbar-auto-scrollbar-color-thumb: var(--black1) !important;
	--scrollbar-auto-scrollbar-color-track: var(--black3) !important;
	--deprecated-store-bg: var(--black0) !important;
	--input-background: var(--black3) !important;
}

/* Mentions */
.mentioned-Tre-dv .mention.interactive {
	color: var(--white) !important;
}

.mentioned-Tre-dv::before {
	background-color: var(--white) !important;
}

/* Home */
.container-2cd8Mz {
	background-color: var(--black2) !important;
}

/* Autocomplete popup */
.autocomplete-3NRXG8 {
	background-color: var(--black2) !important;
}

.wrapper-1NNaWG.categoryHeader-OpJ1Ly {
	background-color: var(--black2) !important;
}

.autocomplete-3NRXG8 {
	background-color: var(--black2) !important;
}

/* Autocomplete popup selection */
.selected-3H3-RC {
	background-color: var(--black3) !important;
}

/* Search: Items */
.container-2McqkF {
	background-color: var(--black0) !important;
}

.searchOption-351dTI:hover {
	background-color: var(--black3) !important;
}

/* Search: No shadows */
.option-ayUoaq:after {
	background: none !important;
}

/* Search: in-section */
.queryContainer-ZunrLZ {
	background-color: var(--black0) !important;
}

/* Search: History */
.option-ayUoaq:hover {
	background-color: var(--black3) !important;
}

/* Search: Little Icon Thingy */
.searchFilter-2UfsDk,
.searchAnswer-23w-CH {
	background-color: var(--black3) !important;
}

/* IN ORDER: New-Unreads-Btn,jumpToPresentBar,CTRL+K */
.bar-2eAyLE,.jumpToPresentBar-1cEnH0,.input-3r5zZY {
	background-color: var(--gray0) !important;
}

/* New Message Bar */
.newMessagesBar-1hF-9G:before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	background: var(--gray0) !important;
	border-radius:0 0 3px 3px;
}

/* New Messages Flag */
.isUnread-3Lojb- {
	border-color: var(--gray0) !important;
}

.unreadPill-3nEWYM {
	background-color: var(--gray0) !important;
}

.unreadPillCapStroke-1nE1Q8 {
	fill: var(--gray0) !important;
	color: var(--gray0) !important;
}

.isUnread-3Lojb- .content-3spvdd {
	color: var(--gray0) !important;
}

/* Server Modals */
.root-g14mjS,
.separator-2lLxgC {
	background-color: var(--black2) !important;
}

.footer-31IekZ {
	background-color: var(--black1) !important;
}

/* Boost Page */
.perksModal-CLcR1c {
	background-color: var(--black1) !important;
}

.tierMarkerBackground-G8FoN4 {
	background-color: var(--black2) !important;
}

/* Emoji Popout */
.popoutContainer-2wbmiM {
	background-color: var(--black1) !important;
}

/* Presence Buttons */
.lookFilled-yCfaCM.colorGrey-2iAG-B,
.lookFilled-yCfaCM.colorPrimary-2AuQVo {
	background-color: var(--black3) !important;
}

/* Primary Card */
.cardPrimary-3qRT__ {
	background-color: var(--black1) !important;
}

/* Payment Page Boxes */
.paymentPane-ut5qKZ,
.paginator-1eqD2g,
.payment-2bOh4k,
.codeRedemptionRedirect-3SBiCp {
	background-color: var(--black1) !important;
}

.bottomDivider-ZmTm-j {
	border-bottom-color: var(--black2) !important;
}

/* Spotify Invite */
.invite-3uuHYQ {
	background-color: var(--black1) !important;
}

/* Edit Attachment */
.footer-VCsJQY {
	background-color: var(--black1) !important;
}

/* Spoilers */
.spoilerText-27bIiA.hidden-3B-Rum,
.inlineContent-2YnoDy {
	background-color: var(--black3) !important;
}

/* Stream Preview */
.streamPreview-I7itZ6 {
	background-color: var(--black2) !important;
}

/* Selection */
::-moz-selection {
	color: var(--white) !important;
	background: var(--black4) !important;
}

::selection {
	color: var(--white) !important;
	background: var(--black4) !important;
}

/* Delete Message Confirmation */
.message-G6O-Wv {
	background-color: var(--black2) !important;
	box-shadow: 0 0 0 1px hsla(var(--black3_hsl), 0.6), 0 2px 10px 0 hsla(var(--black3_hsl), 0.1) !important;
}

/* Command Option */
.pill-1HLSrc,
.optionKey-1tfFt_ {
	background-color: var(--black2) !important;
}

/* Volume Slider */
.tooltipContent-Nejnvh {
	background-color: var(--black2) !important;
}

.grabber-2GQyvM {
	background-color: var(--white) !important;
}

.bar-1Bhnl9 {
	background-color: var(--gray0) !important;
}

.tooltipPointer-3L49xb {
	border-top-color: var(--black2) !important;
}

/* Call Page */
.tile-2TcwiO {
	background-color: var(--black0) !important;
}

.button-3Vyz67 {
	background-color: var(--black2) !important;
}

.buttonColor-28DXIe,
.colorable-3rVGna.primaryDark-2UJt1G {
	background-color: var(--black2) !important;
}

.emptyPreview-1SMLD4 {
	background: var(--black0) !important;
}

/* Reactors List */
.scroller-2GkvCq {
	background: var(--black1) !important;
}

.reactionDefault-1Sjj1f:hover,
.reactionSelected-1aMb2K {
	background-color: var(--black2) !important;
}

.reactors-1VXca7 {
	background-color: var(--black2) !important;
}


================================================
FILE: .config/discocss/preload.js
================================================
module.exports = () => {
  const fs = require("fs");
  const confDir = "/home/amitgold/.config/discocss";
  const cssFile = "/home/amitgold/.config/discocss/custom.css";

  function reload(style) {
    style.innerHTML = fs.readFileSync(cssFile);
  }

  function inject({ document, window }) {
    window.addEventListener("load", () => {
      const style = document.createElement("style");
      reload(style);
      document.head.appendChild(style);

      fs.watch(confDir, {}, () => reload(style));
    });
  }

  inject(require("electron").webFrame.context);
};

module.exports.mw = (mainWindow) => {
  mainWindow.setBackgroundColor("#00000000");
};

module.exports.mo = (options) => {
  options.transparent = true;
  if (process.platform === "linux") {
    options.frame = true;
  }
};


================================================
FILE: .config/dunst/dunstrc
================================================
[global]
    follow = mouse
    indicate_hidden = yes

    offset = 10x10

    notification_height = 0

    separator_height = 2

    padding = 8
    horizontal_padding = 8
    text_icon_padding = 0
    frame_width = 2

    frame_color = "#89B4FA"
    separator_color = frame

    sort = yes
    idle_threshold = 120
    font = monospace 10
    line_height = 0
    markup = full
    alignment = left
    vertical_alignment = center
    show_age_threshold = 60
    word_wrap = yes
    stack_duplicates = true
    hide_duplicate_count = false

    show_indicators = yes

    min_icon_size = 0
    max_icon_size = 64

    icon_path = /usr/share/icons/Papirus-Dark/16x16/status/:/usr/share/icons/Papirus-Dark/16x16/devices/:/usr/share/icons/Papirus-Dark/16x16/actions/:/usr/share/icons/Papirus-Dark/16x16/animations/:/usr/share/icons/Papirus-Dark/16x16/apps/:/usr/share/icons/Papirus-Dark/16x16/categories/:/usr/share/icons/Papirus-Dark/16x16/emblems/:/usr/share/icons/Papirus-Dark/16x16/emotes/:/usr/share/icons/Papirus-Dark/16x16/devices/mimetypes:/usr/share/icons/Papirus-Dark/16x16/panel/:/usr/share/icons/Papirus-Dark/16x16/places/

    dmenu = /usr/bin/wofi -p dunst:
    browser = /usr/bin/firefox --new-tab

    title = Dunst
    class = Dunst

    corner_radius = 10
    timeout = 5

[urgency_low]
    background = "#1E1E2E"
    foreground = "#CDD6F4"

[urgency_normal]
    background = "#1E1E2E"
    foreground = "#CDD6F4"

[urgency_critical]
    background = "#1E1E2E"
    foreground = "#CDD6F4"
    frame_color = "#FAB387"


================================================
FILE: .config/fontconfig/fonts.conf
================================================
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
  <alias>
    <family>monospace</family>
    <prefer><family>LigaIosevka Nerd Font</family></prefer>
  </alias>

  <alias>
    <family>sans-serif</family>
    <prefer><family>Fira Sans</family></prefer>
  </alias>
</fontconfig>


================================================
FILE: .config/hypr/hyprland.conf
================================================
#### Hyprland Config ####

exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once=wlsunset -S 6:00 -s 18:30
exec-once=swaybg -m fill -i ~/.config/hypr/wallpapers/kurz.png
exec-once=waybar
exec-once=blueman-applet
exec-once=dunst
exec-once=udev-block-notify
exec-once=~/.config/hypr/scripts/sleep.sh
exec-once=echo us > /tmp/kb_layout
exec-once=hyprctl setcursor Catppuccin-Cursor 10

monitor=,preferred,auto,1
monitor=HDMI-A-2,preferred,auto,1,mirror,eDP-1

input {
    kb_layout=us
    kb_variant=
    kb_model=
    kb_options=
    kb_rules=

    follow_mouse=1
    float_switch_override_focus=true

    touchpad {
        natural_scroll=yes
    }
}

general {
    sensitivity=1.0 # for mouse cursor
    main_mod=SUPER
    layout=dwindle

    gaps_in=5
    gaps_out=10
    border_size=2

    col.active_border=0xb3cba6f7
    col.inactive_border=0xb3313244

    apply_sens_to_raw=0 # whether to apply the sensitivity to raw input (e.g. used by games where you aim using your mouse)
}

decoration {
    rounding=5
    blur=true
    blur_size=10 # minimum 1
    blur_passes=4 # minimum 1, more passes = more resource intensive.
    blur_new_optimizations=true
    # Your blur "amount" is blur_size * blur_passes, but high blur_size (over around 5-ish) will produce artifacts.
    # if you want heavy blur, you need to up the blur_passes.
    # the more passes, the more you can up the blur_size without noticing artifacts.
}

animations {
    enabled=1
    animation=windows,1,4,default
    animation=border,1,10,default
    animation=fade,1,10,default
    animation=workspaces,1,4,default
}

dwindle {
    pseudotile=0 # enable pseudotiling on dwindle
    force_split=2
}

master {
    new_is_master=false
}

gestures {
    workspace_swipe=yes
}

misc {
    disable_hyprland_logo=true
    disable_splash_rendering=true
    mouse_move_enables_dpms=true
    no_vfr=false
}

windowrule=float,blueman
windowrule=float,Anydesk
windowrule=float,file_progress
windowrule=float,confirm
windowrule=float,dialog
windowrule=float,download
windowrule=float,notification
windowrule=float,error
windowrule=float,splash
windowrule=float,confirmreset
windowrule=float,title:Open File
windowrule=float,title:branchdialog
windowrule=float,minecraft-launcher

blurls=gtk-layer-shell
blurls=lockscreen

bind=SUPER,T,exec,kitty
bind=SUPER,B,exec,firefox
bind=SUPER,E,exec,thunar
bind=SUPER,Q,killactive,
bind=SUPERSHIFT,Q,exec,hyprctl kill
bind=SUPERCTRL,Q,exit,
bind=SUPER,V,togglefloating,
bind=SUPER,F,fullscreen,
bind=SUPER,A,exec,wofi --show drun -I -m -i
bind=SUPER,P,exec,~/.config/hypr/scripts/logout.sh
bind=SUPERSHIFT,B,exec,~/.config/hypr/scripts/toggle_bluetooth.sh

bind=SUPER,hebrew_aleph,exec,kitty
bind=SUPER,hebrew_nun,exec,firefox
bind=SUPER,hebrew_kuf,exec,thunar
bind=SUPER,slash,killactive,
bind=SUPERSHIFT,slash,exec,hyprctl kill
bind=SUPERSHIFT,slash,exit,
bind=SUPER,hebrew_he,togglefloating,
bind=SUPER,hebrew_kaph,fullscreen,
bind=SUPER,hebrew_shin,exec,wofi --show drun -I -m -i
bind=SUPER,hebrew_pe,exec,~/.config/hypr/scripts/logout.sh
bind=SUPERSHIFT,hebrew_nun,exec,~/.config/hypr/scripts/toggle_bluetooth.sh

bind=ALT,Space,exec,wofi-emoji
bind=ALT,C,exec,wofi-calc
bind=ALT,hebrew_bet,exec,wofi-calc

bind=,Print,exec,grim -g "$(slurp)" $HOME/Pictures/Screenshots/$(date +'%s.png')
bind=SHIFT,Print,exec,grim $HOME/Pictures/Screenshots/$(date +'%s.png')

bind=SUPER,C,exec,~/.config/hypr/scripts/caffeine.sh
bind=SUPER,hebrew_bet,exec,~/.config/hypr/scripts/caffeine.sh

bindr=ALTSHIFT,Shift_L,exec,~/.config/hypr/scripts/switch_kb_layout.sh

bind=SUPER,H,movefocus,l
bind=SUPER,J,movefocus,d
bind=SUPER,K,movefocus,u
bind=SUPER,L,movefocus,r

bind=SUPERSHIFT,H,movewindow,l
bind=SUPERSHIFT,J,movewindow,d
bind=SUPERSHIFT,K,movewindow,u
bind=SUPERSHIFT,L,movewindow,r

bind=SUPERCTRL,L,resizeactive,70 0
bind=SUPERCTRL,H,resizeactive,-70 0
bind=SUPERCTRL,K,resizeactive,0 -70
bind=SUPERCTRL,J,resizeactive,0 70


bind=SUPER,hebrew_yod,movefocus,l
bind=SUPER,hebrew_chet,movefocus,d
bind=SUPER,hebrew_lamed,movefocus,u
bind=SUPER,hebrew_finalkaf,movefocus,r

bind=SUPERSHIFT,hebrew_yod,movewindow,l
bind=SUPERSHIFT,hebrew_chet,movewindow,d
bind=SUPERSHIFT,hebrew_lamed,movewindow,u
bind=SUPERSHIFT,hebrew_finalkaf,movewindow,r

bind=SUPERCTRL,hebrew_yod,resizeactive,70 0
bind=SUPERCTRL,hebrew_chet,resizeactive,-70 0
bind=SUPERCTRL,hebrew_lamed,resizeactive,0 -70
bind=SUPERCTRL,hebrew_finalkaf,resizeactive,0 70

bind=SUPERSHIFT,P,pseudo

bind=SUPER,Space,layoutmsg,swapwithmaster

bind=SUPER,comma,splitratio,-0.1
bind=SUPER,period,splitratio,+0.1

bind=SUPER,hebrew_taw,splitratio,-0.1
bind=SUPER,hebrew_finalzade,splitratio,+0.1

bind=SUPER,I,workspace,-1
bind=SUPER,O,workspace,+1
bind=SUPERSHIFT,I,movetoworkspace,-1
bind=SUPERSHIFT,O,movetoworkspace,+1

# bind=SUPER,backslash,swapactiveworkspaces,eDP1 

bind=SUPER,hebrew_finalnun,workspace,-1
bind=SUPER,hebrew_finalmem,workspace,+1
bind=SUPERSHIFT,hebrew_finalnun,movetoworkspace,-1
bind=SUPERSHIFT,hebrew_finalmem,movetoworkspace,+1

bind=,XF86AudioRaiseVolume,exec,~/.config/hypr/scripts/volume_ctl.sh up
bind=,XF86AudioLowerVolume,exec,~/.config/hypr/scripts/volume_ctl.sh down 
bind=,XF86AudioMute,exec,~/.config/hypr/scripts/volume_ctl.sh mute 
bind=,XF86MonBrightnessDown,exec,~/.config/hypr/scripts/brightness_ctl.sh down 
bind=,XF86MonBrightnessUp,exec,~/.config/hypr/scripts/brightness_ctl.sh up 
bind=SHIFT,XF86MonBrightnessUp,exec,~/.config/hypr/scripts/brightness_ctl.sh max

bind=SUPER,semicolon,exec,playerctl play-pause
bind=SUPER,hebrew_finalpe,exec,playerctl play-pause
bind=SUPER,bracketleft,exec,playerctl next
bind=SUPER,bracketright,exec,playerctl previous

bind=SUPER,1,workspace,1
bind=SUPER,2,workspace,2
bind=SUPER,3,workspace,3
bind=SUPER,4,workspace,4
bind=SUPER,5,workspace,5
bind=SUPER,6,workspace,6
bind=SUPER,7,workspace,7
bind=SUPER,8,workspace,8
bind=SUPER,9,workspace,9
bind=SUPER,0,workspace,10

bind=SUPERSHIFT,1,movetoworkspace,1
bind=SUPERSHIFT,2,movetoworkspace,2
bind=SUPERSHIFT,3,movetoworkspace,3
bind=SUPERSHIFT,4,movetoworkspace,4
bind=SUPERSHIFT,5,movetoworkspace,5
bind=SUPERSHIFT,6,movetoworkspace,6
bind=SUPERSHIFT,7,movetoworkspace,7
bind=SUPERSHIFT,8,movetoworkspace,8
bind=SUPERSHIFT,9,movetoworkspace,9
bind=SUPERSHIFT,0,movetoworkspace,10

bind=SUPER,mouse_down,workspace,e-1
bind=SUPER,mouse_up,workspace,e+1
bindm=SUPER,mouse:272,movewindow
bindm=SUPER,mouse:273,resizewindow


================================================
FILE: .config/hypr/scripts/brightness_ctl.sh
================================================
#!/usr/bin/env bash

# You can call this script like this:
# $ ./brightnessControl.sh up
# $ ./brightnessControl.sh down

# Script inspired by these wonderful people:
# https://github.com/dastorm/volume-notification-dunst/blob/master/volume.sh
# https://gist.github.com/sebastiencs/5d7227f388d93374cebdf72e783fbd6a


function get_brightness {
	brightnessctl -m | awk -F, '{print substr($4, 0, length($4)-1)}'
}

function send_notification {
  icon="preferences-system-brightness-lock"
  brightness=$(get_brightness)
  # Make the bar with the special character ─ (it's not dash -)
  # https://en.wikipedia.org/wiki/Box-drawing_character
  bar=$(seq -s "─" 0 $(((brightness - 1) / 4)) | sed 's/[0-9]//g')
  space=$(seq --separator=" " 0 "$(((100 - brightness) / 4))" | sed 's/[0-9]//g')
  # Send the notification
  dunstify -i "$icon" -r 5555 -u normal "|$bar$space| $brightness%"
}


case $1 in
  up)
    # increase the backlight by 5%
    brightnessctl set 5%+
    send_notification
    ;;
  down)
    # decrease the backlight by 5%
    brightnessctl set 5%-
    send_notification
    ;;
  max)
    brightnessctl set 100%
    send_notification
    ;;
  blank)
    brightnessctl set 0%
    send_notification
    ;;
esac


================================================
FILE: .config/hypr/scripts/caffeine.sh
================================================
#!/bin/sh

if pgrep -x sleep.sh > /dev/null; then
	dunstify -r 4444 -i /usr/share/icons/Papirus-Dark/symbolic/status/my-caffeine-on-symbolic.svg "Caffeine Enabled"
    killall swayidle
    ~/.config/hypr/scripts/lock_on_sleep.sh &
else
	dunstify -r 4444 -i /usr/share/icons/Papirus-Dark/symbolic/status/my-caffeine-off-symbolic.svg "Caffeine Disabled"
    killall swayidle
    ~/.config/hypr/scripts/sleep.sh &
fi


================================================
FILE: .config/hypr/scripts/lock.sh
================================================
#!/bin/sh

swaylock \
    --hide-keyboard-layout \
    --indicator-radius 100 \
    --indicator-thickness 7 \
    --ring-color cba6f7 \
    --ring-ver-color 89b4fa \
    --ring-wrong-color f38ba8 \
    --ring-clear-color a6e3a1 \
    --key-hl-color 1e1e2e \
    --bs-hl-color eba0ac \
    --text-color 11111b \
    --text-caps-lock-color 11111b \
    --line-color 00000000 \
    --line-ver-color 00000000 \
    --line-wrong-color 00000000 \
    --line-clear-color 00000000 \
    --separator-color 00000000 \
    --inside-color cba6f7 \
    --inside-ver-color 89b4fa\
    --inside-wrong-color f38ba8 \
    --inside-clear-color a6e3a1 \
    --color 1e1e2e80 \
    --clock \
    --indicator


================================================
FILE: .config/hypr/scripts/lock_on_sleep.sh
================================================
#!/bin/sh

swayidle -w before-sleep "$HOME/.config/hypr/scripts/lock.sh"


================================================
FILE: .config/hypr/scripts/logout.sh
================================================
#!/bin/sh
wlogout --protocol layer-shell -b 5 -T 400 -B 400


================================================
FILE: .config/hypr/scripts/sleep.sh
================================================
#!/bin/sh
swayidle -w \
        before-sleep "$HOME/.config/hypr/scripts/lock.sh" \
        timeout 160 'temp=$(brightnessctl g); brightnessctl set $((temp / 2))' \
            resume 'temp=$(brightnessctl g); brightnessctl set $((temp * 2))' \
        timeout 300 "$HOME/.config/hypr/scripts/lock.sh & sleep 0.1 && hyprctl dispatch dpms off" \
            resume 'hyprctl dispatch dpms on' \
        timeout 600 'systemctl suspend' \
            resume 'hyprctl dispatch dpms on'


================================================
FILE: .config/hypr/scripts/switch_kb_layout.sh
================================================
#!/bin/sh

layout_f=/tmp/kb_layout

case $(cat "$layout_f") in 
  us)
    hyprctl keyword input:kb_layout il
    echo il > $layout_f
    ;;
  il)
    hyprctl keyword input:kb_layout us
    echo us > $layout_f
    ;;
esac


================================================
FILE: .config/hypr/scripts/toggle_bluetooth.sh
================================================
#!/bin/sh

state=$(bluetoothctl -- show | grep Powered | awk '{ print $2 }')

if [[ $state == 'yes' ]]; then
    bluetoothctl -- power off
else
    bluetoothctl -- power on
fi


================================================
FILE: .config/hypr/scripts/volume_ctl.sh
================================================
#!/usr/bin/env bash

# You can call this script like this:
# $ ./volumeControl.sh up
# $ ./volumeControl.sh down
# $ ./volumeControl.sh mute

# Script modified from these wonderful people:
# https://github.com/dastorm/volume-notification-dunst/blob/master/volume.sh
# https://gist.github.com/sebastiencs/5d7227f388d93374cebdf72e783fbd6a

function get_volume {
  pactl get-sink-volume @DEFAULT_SINK@ | head -n 1 | cut -f 2 -d '/' | cut -d '%' -f 1 | xargs
}

function is_mute {
  amixer get Master | grep '%' | grep -oE '[^ ]+$' | grep off > /dev/null
}

function send_notification {
  iconSound="audio-volume-high"
  iconMuted="audio-volume-muted"
  if is_mute ; then
    dunstify -i $iconMuted -r 2593 -u normal "Muted"
  else
    volume=$(get_volume)
    # Make the bar with the special character ─ (it's not dash -)
    # https://en.wikipedia.org/wiki/Box-drawing_character
    bar=$(seq --separator="─" 0 "$(((volume - 1) / 4))" | sed 's/[0-9]//g')
    space=$(seq --separator=" " 0 "$(((100 - volume) / 4))" | sed 's/[0-9]//g')
    # Send the notification
    dunstify -i $iconSound -r 2593 -u normal "|$bar$space| $volume%"
  fi
}

case $1 in
  up)
    # set the volume on (if it was muted)
    amixer -D pipewire set Master on > /dev/null
    # up the volume (+ 5%)
    pactl set-sink-volume @DEFAULT_SINK@ +5% > /dev/null
    send_notification
    canberra-gtk-play -i audio-volume-change -d "changeVolume"
    ;;
  down)
    amixer -D pipewire set Master on > /dev/null
    pactl set-sink-volume @DEFAULT_SINK@ -5% > /dev/null
    send_notification
    canberra-gtk-play -i audio-volume-change -d "changeVolume"
    ;;
  mute)
    # toggle mute
    amixer -D pipewire set Master 1+ toggle > /dev/null
    send_notification
    ;;
esac


================================================
FILE: .config/kitty/kitty.conf
================================================
# vim:ft=kitty

scrollback_pager bash -c "exec nvim 63<&0 0</dev/null -u NONE -c 'map <silent> q :qa!<CR>' -c 'set shell=bash scrollback=100000 termguicolors laststatus=0 clipboard+=unnamedplus' -c 'autocmd TermEnter * stopinsert' -c 'autocmd TermClose * call cursor(max([0,INPUT_LINE_NUMBER-1])+CURSOR_LINE, CURSOR_COLUMN)' -c 'terminal sed </dev/fd/63 -e \"s/'$'\x1b'']8;;file:[^\]*[\]//g\" && sleep 0.01 && printf \"'$'\x1b'']2;\"'"

background_opacity 0.8
window_padding_width 15
allow_remote_control yes
enable_audio_bell no
url_style single
tab_bar_style powerline

map kitty_mod+o     next_tab
map kitty_mod+i     previous_tab
map kitty_mod+t     new_tab
map kitty_mod+q     close_tab
map kitty_mod+.     move_tab_forward
map kitty_mod+,     move_tab_backward
map kitty_mod+alt+t set_tab_title

map kitty_mod+up        scroll_line_up
map kitty_mod+k         scroll_line_up
map kitty_mod+down      scroll_line_down
map kitty_mod+j         scroll_line_down
map kitty_mod+u 	      scroll_page_up
map kitty_mod+d 	      scroll_page_down
map kitty_mod+home      scroll_home
map kitty_mod+end       scroll_end
map kitty_mod+h         show_scrollback

map ctrl+backspace send_text all \x17

# The basic colors
foreground              #CDD6F4
background              #1E1E2E
selection_foreground    #1E1E2E
selection_background    #F5E0DC

# Cursor colors
cursor                  #F5E0DC
cursor_text_color       #1E1E2E

# URL underline color when hovering with mouse
url_color               #F5E0DC

# Kitty window border colors
active_border_color     #B4BEFE
inactive_border_color   #6C7086
bell_border_color       #F9E2AF

# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system

# Tab bar colors
active_tab_foreground   #11111B
active_tab_background   #CBA6F7
inactive_tab_foreground #CDD6F4
inactive_tab_background #181825
tab_bar_background      #11111B

# Colors for marks (marked text in the terminal)
mark1_foreground #1E1E2E
mark1_background #B4BEFE
mark2_foreground #1E1E2E
mark2_background #CBA6F7
mark3_foreground #1E1E2E
mark3_background #74C7EC

# The 16 terminal colors

# black
color0 #45475A
color8 #585B70

# red
color1 #F38BA8
color9 #F38BA8

# green
color2  #A6E3A1
color10 #A6E3A1

# yellow
color3  #F9E2AF
color11 #F9E2AF

# blue
color4  #89B4FA
color12 #89B4FA

# magenta
color5  #F5C2E7
color13 #F5C2E7

# cyan
color6  #94E2D5
color14 #94E2D5

# white
color7  #BAC2DE
color15 #A6ADC8


================================================
FILE: .config/lf/colors
================================================
# vim:ft=dircolors
# (This is not a dircolors file but it helps to highlight colors and comments)

# default values from dircolors
# (entries with a leading # are not implemented in lf)
# #no     00              # NORMAL
# fi      00              # FILE
# #rs     0               # RESET
# di      01;34           # DIR
# ln      01;36           # LINK
# #mh     00              # MULTIHARDLINK
# pi      40;33           # FIFO
# so      01;35           # SOCK
# #do     01;35           # DOOR
# bd      40;33;01        # BLK
# cd      40;33;01        # CHR
# or      40;31;01        # ORPHAN
# #mi     00              # MISSING
# su      37;41           # SETUID
# sg      30;43           # SETGID
# #ca     30;41           # CAPABILITY
# tw      30;42           # STICKY_OTHER_WRITABLE
# ow      34;42           # OTHER_WRITABLE
# st      37;44           # STICKY
# ex      01;32           # EXEC

# default values from lf (with matching order)
# ln      01;36   # LINK
# or      31;01   # ORPHAN
# tw      01;34   # STICKY_OTHER_WRITABLE
# ow      01;34   # OTHER_WRITABLE
# st      01;34   # STICKY
# di      01;34   # DIR
# pi      33      # FIFO
# so      01;35   # SOCK
# bd      33;01   # BLK
# cd      33;01   # CHR
# su      01;32   # SETUID
# sg      01;32   # SETGID
# ex      01;32   # EXEC
# fi      00      # FILE

# file types (with matching order)
ln      01;36   # LINK
or      31;01   # ORPHAN
tw      34      # STICKY_OTHER_WRITABLE
ow      34      # OTHER_WRITABLE
st      01;34   # STICKY
di      01;34   # DIR
pi      33      # FIFO
so      01;35   # SOCK
bd      33;01   # BLK
cd      33;01   # CHR
su      01;32   # SETUID
sg      01;32   # SETGID
ex      01;32   # EXEC
fi      00      # FILE

# archives or compressed (dircolors defaults)
*.tar   01;31
*.tgz   01;31
*.arc   01;31
*.arj   01;31
*.taz   01;31
*.lha   01;31
*.lz4   01;31
*.lzh   01;31
*.lzma  01;31
*.tlz   01;31
*.txz   01;31
*.tzo   01;31
*.t7z   01;31
*.zip   01;31
*.z     01;31
*.dz    01;31
*.gz    01;31
*.lrz   01;31
*.lz    01;31
*.lzo   01;31
*.xz    01;31
*.zst   01;31
*.tzst  01;31
*.bz2   01;31
*.bz    01;31
*.tbz   01;31
*.tbz2  01;31
*.tz    01;31
*.deb   01;31
*.rpm   01;31
*.jar   01;31
*.war   01;31
*.ear   01;31
*.sar   01;31
*.rar   01;31
*.alz   01;31
*.ace   01;31
*.zoo   01;31
*.cpio  01;31
*.7z    01;31
*.rz    01;31
*.cab   01;31
*.wim   01;31
*.swm   01;31
*.dwm   01;31
*.esd   01;31

# image formats (dircolors defaults)
*.jpg   01;35
*.jpeg  01;35
*.mjpg  01;35
*.mjpeg 01;35
*.gif   01;35
*.bmp   01;35
*.pbm   01;35
*.pgm   01;35
*.ppm   01;35
*.tga   01;35
*.xbm   01;35
*.xpm   01;35
*.tif   01;35
*.tiff  01;35
*.png   01;35
*.svg   01;35
*.svgz  01;35
*.mng   01;35
*.pcx   01;35
*.mov   01;35
*.mpg   01;35
*.mpeg  01;35
*.m2v   01;35
*.mkv   01;35
*.webm  01;35
*.ogm   01;35
*.mp4   01;35
*.m4v   01;35
*.mp4v  01;35
*.vob   01;35
*.qt    01;35
*.nuv   01;35
*.wmv   01;35
*.asf   01;35
*.rm    01;35
*.rmvb  01;35
*.flc   01;35
*.avi   01;35
*.fli   01;35
*.flv   01;35
*.gl    01;35
*.dl    01;35
*.xcf   01;35
*.xwd   01;35
*.yuv   01;35
*.cgm   01;35
*.emf   01;35
*.ogv   01;35
*.ogx   01;35

# audio formats (dircolors defaults)
*.aac   00;36
*.au    00;36
*.flac  00;36
*.m4a   00;36
*.mid   00;36
*.midi  00;36
*.mka   00;36
*.mp3   00;36
*.mpc   00;36
*.ogg   00;36
*.ra    00;36
*.wav   00;36
*.oga   00;36
*.opus  00;36
*.spx   00;36
*.xspf  00;36


================================================
FILE: .config/lf/icons
================================================
# vim:ft=conf

# These examples require Nerd Fonts or a compatible font to be used.
# See https://www.nerdfonts.com for more information.

# default values from lf (with matching order)
# ln      l       # LINK
# or      l       # ORPHAN
# tw      t       # STICKY_OTHER_WRITABLE
# ow      d       # OTHER_WRITABLE
# st      t       # STICKY
# di      d       # DIR
# pi      p       # FIFO
# so      s       # SOCK
# bd      b       # BLK
# cd      c       # CHR
# su      u       # SETUID
# sg      g       # SETGID
# ex      x       # EXEC
# fi      -       # FILE

# file types (with matching order)
ln             # LINK
or             # ORPHAN
tw      t       # STICKY_OTHER_WRITABLE
ow             # OTHER_WRITABLE
st      t       # STICKY
di             # DIR
pi      p       # FIFO
so      s       # SOCK
bd      b       # BLK
cd      c       # CHR
su      u       # SETUID
sg      g       # SETGID
ex             # EXEC
fi             # FILE

# file extensions (vim-devicons)
*.styl          
*.sass          
*.scss          
*.htm           
*.html          
*.slim          
*.haml          
*.ejs           
*.css           
*.less          
*.md            
*.mdx           
*.markdown      
*.rmd           
*.json          
*.webmanifest   
*.js            
*.mjs           
*.jsx           
*.rb            
*.gemspec       
*.rake          
*.php           
*.py            
*.pyc           
*.pyo           
*.pyd           
*.coffee        
*.mustache      
*.hbs           
*.conf          
*.ini           
*.yml           
*.yaml          
*.toml          
*.bat           
*.mk            
*.jpg           
*.jpeg          
*.bmp           
*.png           
*.webp          
*.gif           
*.ico           
*.twig          
*.cpp           
*.c++           
*.cxx           
*.cc            
*.cp            
*.c             
*.cs            
*.h             
*.hh            
*.hpp           
*.hxx           
*.hs            
*.lhs           
*.nix           
*.lua           
*.java          
*.sh            
*.fish          
*.bash          
*.zsh           
*.ksh           
*.csh           
*.awk           
*.ps1           
*.ml            λ
*.mli           λ
*.diff          
*.db            
*.sql           
*.dump          
*.clj           
*.cljc          
*.cljs          
*.edn           
*.scala         
*.go            
*.dart          
*.xul           
*.sln           
*.suo           
*.pl            
*.pm            
*.t             
*.rss           
'*.f#'          
*.fsscript      
*.fsx           
*.fs            
*.fsi           
*.rs            
*.rlib          
*.d             
*.erl           
*.hrl           
*.ex            
*.exs           
*.eex           
*.leex          
*.heex          
*.vim           
*.ai            
*.psd           
*.psb           
*.ts            
*.tsx           
*.jl            
*.pp            
*.vue           ﵂
*.elm           
*.swift         
*.xcplayground  
*.tex           ﭨ
*.r             ﳒ
*.rproj         鉶
*.sol           ﲹ
*.pem           

# file names (vim-devicons) (case-insensitive not supported in lf)
*gruntfile.coffee       
*gruntfile.js           
*gruntfile.ls           
*gulpfile.coffee        
*gulpfile.js            
*gulpfile.ls            
*mix.lock               
*dropbox                
*.ds_store              
*.gitconfig             
*.gitignore             
*.gitattributes         
*.gitlab-ci.yml         
*.bashrc                
*.zshrc                 
*.zshenv                
*.zprofile              
*.vimrc                 
*.gvimrc                
*_vimrc                 
*_gvimrc                
*.bashprofile           
*favicon.ico            
*license                
*node_modules           
*react.jsx              
*procfile               
*dockerfile             
*docker-compose.yml     
*rakefile               
*config.ru              
*gemfile                
*makefile               
*cmakelists.txt         
*robots.txt             ﮧ

# file names (case-sensitive adaptations)
*Gruntfile.coffee       
*Gruntfile.js           
*Gruntfile.ls           
*Gulpfile.coffee        
*Gulpfile.js            
*Gulpfile.ls            
*Dropbox                
*.DS_Store              
*LICENSE                
*React.jsx              
*Procfile               
*Dockerfile             
*Docker-compose.yml     
*Rakefile               
*Gemfile                
*Makefile               
*CMakeLists.txt         

# file patterns (vim-devicons) (patterns not supported in lf)
# .*jquery.*\.js$         
# .*angular.*\.js$        
# .*backbone.*\.js$       
# .*require.*\.js$        
# .*materialize.*\.js$    
# .*materialize.*\.css$   
# .*mootools.*\.js$       
# .*vimrc.*               
# Vagrantfile$            

# file patterns (file name adaptations)
*jquery.min.js          
*angular.min.js         
*backbone.min.js        
*require.min.js         
*materialize.min.js     
*materialize.min.css    
*mootools.min.js        
*vimrc                  
Vagrantfile             

# archives or compressed (extensions from dircolors defaults)
*.tar   
*.tgz   
*.arc   
*.arj   
*.taz   
*.lha   
*.lz4   
*.lzh   
*.lzma  
*.tlz   
*.txz   
*.tzo   
*.t7z   
*.zip   
*.z     
*.dz    
*.gz    
*.lrz   
*.lz    
*.lzo   
*.xz    
*.zst   
*.tzst  
*.bz2   
*.bz    
*.tbz   
*.tbz2  
*.tz    
*.deb   
*.rpm   
*.jar   
*.war   
*.ear   
*.sar   
*.rar   
*.alz   
*.ace   
*.zoo   
*.cpio  
*.7z    
*.rz    
*.cab   
*.wim   
*.swm   
*.dwm   
*.esd   

# image formats (extensions from dircolors defaults)
*.jpg   
*.jpeg  
*.mjpg  
*.mjpeg 
*.gif   
*.bmp   
*.pbm   
*.pgm   
*.ppm   
*.tga   
*.xbm   
*.xpm   
*.tif   
*.tiff  
*.png   
*.svg   
*.svgz  
*.mng   
*.pcx   
*.mov   
*.mpg   
*.mpeg  
*.m2v   
*.mkv   
*.webm  
*.ogm   
*.mp4   
*.m4v   
*.mp4v  
*.vob   
*.qt    
*.nuv   
*.wmv   
*.asf   
*.rm    
*.rmvb  
*.flc   
*.avi   
*.fli   
*.flv   
*.gl    
*.dl    
*.xcf   
*.xwd   
*.yuv   
*.cgm   
*.emf   
*.ogv   
*.ogx   

# audio formats (extensions from dircolors defaults)
*.aac   
*.au    
*.flac  
*.m4a   
*.mid   
*.midi  
*.mka   
*.mp3   
*.mpc   
*.ogg   
*.ra    
*.wav   
*.oga   
*.opus  
*.spx   
*.xspf  

# other formats
*.pdf   


================================================
FILE: .config/lf/lfrc
================================================
set shell bash
set shellopts '-eu'
set icons
set relativenumber
set scrolloff 10
set ifs "\n"
set previewer less


map a push :mkdir<space>
map C clear
map c cut
map d delete
map D trash
map o &mimeopen $f
map O $mimeopen --ask $f
map <a-n> newfold
map ` push :open-with<space>

cmd open-with %"$@" "$fx"
cmd trash %trash-put $fx
cmd mkdir %mkdir "$@"

cmd newfold ${{
    set -f
    read newd
    printf "Directory name: "
    mkdir -- "$newd"
    mv -- $fx "$newd"
}}

cmd j %{{
    result="$(zoxide query --exclude "${PWD}" -- "$@")"
    lf -remote "send ${id} cd '${result}'"
}}

cmd ji ${{
    result="$(zoxide query -i -- "$@")"
    lf -remote "send ${id} cd '${result}'"
}}

cmd fzf_jump ${{
    res="$(find . -maxdepth 1 | fzf --reverse --header='Jump to location' | sed 's/\\/\\\\/g;s/"/\\"/g')"
    if [ -d "$res" ] ; then
        cmd="cd"
    elif [ -f "$res" ] ; then
        cmd="select"
    else
        exit 0
    fi
    lf -remote "send $id $cmd \"$res\""
}}
map <c-f> :fzf_jump

cmd fzf_search ${{
    res="$( \
        RG_PREFIX="rg --column --line-number --no-heading --color=always \
            --smart-case "
        FZF_DEFAULT_COMMAND="$RG_PREFIX ''" \
            fzf --bind "change:reload:$RG_PREFIX {q} || true" \
            --ansi --layout=reverse --header 'Search in files' \
            | cut -d':' -f1
    )"
    [ ! -z "$res" ] && lf -remote "send $id select \"$res\""
}}
map gs :fzf_search

cmd extract ${{
    set -f
    case $f in
        *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;;
        *.tar.gz|*.tgz) tar xzvf $f;;
        *.tar.xz|*.txz) tar xJvf $f;;
        *.zip) unzip $f;;
        *.rar) unrar x $f;;
        *.7z) 7z x $f;;
    esac
}}

# compress current file or selected files with tar and gunzip
cmd tar ${{
    set -f
    mkdir $1
    cp -r $fx $1
    tar czf $1.tar.gz $1
    rm -rf $1
}}

# compress current file or selected files with zip
cmd zip ${{
    set -f
    mkdir $1
    cp -r $fx $1
    zip -r $1.zip $1
    rm -rf $1
}}

cmd on-cd &{{
    # '&' commands run silently in background (which is what we want here),
    # but are not connected to stdout.
    # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
    printf "\033]0; $(pwd | sed "s|$HOME|~|") - lf\007" > /dev/tty
}}
on-cd

cmd open ${{
    case $(file --mime-type -Lb $f) in
        text/*) $EDITOR $fx;;
        *) for f in $fx; do setsid $OPENER $f > /dev/null 2> /dev/null & done;;
    esac
}}

cmd select-files ${{
    { echo "$fs"; find -L "$(pwd)" -mindepth 1 -maxdepth 1 -type f; } |
        if [ "$lf_hidden" = "false" ]; then
          # remove any hidden files so you only select files you can see.
          grep -v '/\.[^/]\+$'
        else
          cat
        fi |
        sed '/^$/d' | sort | uniq -u |
        xargs -d '\n' -r -I{} lf -remote "send $id toggle {}"
}}

cmd select-dirs ${{
    { echo "$fs"; find -L "$(pwd)" -mindepth 1 -maxdepth 1 -type d; } |
        if [ "$lf_hidden" = "false" ]; then
          grep -v '/\.[^/]\+$'
        else
          cat
        fi |
        sed '/^$/d' | sort | uniq -u |
        xargs -d '\n' -r -I{} lf -remote "send $id toggle {}"
}}


cmd cut-add %{{
    files=$(lf -remote load | tail -n +2)
    newline=$'\n'

    # change to $fx to add current file when no toggled
    # files exist.
    if [ -n "$files" ]; then
        new_files=$(echo "$files${newline}$fs" | sort | uniq)
    else
        new_files=$fs
    fi
    # remove empty lines from the file list, because they keep messing
    # up the selection.
    new_files=$(echo "$new_files" | sed --quiet -e '/^$/d' -e 'p')

    lf -remote "save${newline}move${newline}${new_files}${newline}"
    lf -remote "send $id unselect${newline}send $id sync"
}}

cmd cut-remove %{{
    files=$(lf -remote load)
    operation=$(echo "$files" | head -n1)

    if [ "$operation" != "move" ]; then
        lf -remote "send $id echoerr no files in cut list."
        exit 1
    fi

    files=$(echo "$files" | tail -n +2)
    newline=$'\n'

    # change to $fx to remove current file when no toggled
    # files exist.
    if [ -n "$files" ]; then
        # here we want all files in $files that aren't in $fs, making sure
        # that none of the entries in $fs are included, even when they aren't
        # in $files. To do this we concatenate $files and $fs (twice), printing
        # only the uniqe lines.
        new_files=$(echo "$files$newline$fs$newline$fs" | sort | uniq -u)
    else
        new_files=$files
    fi
    new_files=$(echo "$new_files" | sed --quiet -e '/^$/d' -e 'p')

    lf -remote "save${newline}move${newline}${new_files}${newline}"
    lf -remote "send $id unselect${newline}send $id sync"
}}

cmd yank-dirname $dirname -- "$f" | head -c-1 | xclip -i -selection clipboard
cmd yank-path $printf '%s' "$fx" | xclip -i -selection clipboard
cmd yank-basename $basename -a -- $fx | head -c-1 | xclip -i -selection clipboard


================================================
FILE: .config/nvim/init.lua
================================================
require("user.options")
require("user.keymaps")
require("user.plugins")
require("user.autocommands")
require("user.colorscheme")
require("user.cmp")
require("user.telescope")
require("user.treesitter")
require("user.autopairs")
require("user.comment")
require("user.gitsigns")
require("user.nvim-tree")
require("user.bufferline")
require("user.lualine")
require("user.toggleterm")
require("user.project")
require("user.impatient")
require("user.illuminate")
require("user.indentline")
require("user.alpha")
require("user.lsp")
require("user.dap")
require("user.colorizer")
require("user.cutlass")
require("user.substitute")
require("user.autotag")
require("user.whichkey")
require("user.trouble")
require("user.testing")
require("user.diffview")
require("user.surround")
require("user.smart-splits")
require("user.live-command")


================================================
FILE: .config/nvim/lua/user/alpha.lua
================================================
local status_ok, alpha = pcall(require, "alpha")
if not status_ok then
	return
end

local dashboard = require("alpha.themes.dashboard")
local fortune = require("alpha.fortune")

-- Inspired by https://github.com/glepnir/dashboard-nvim with my own flair
local header = {
	[[                                                                   ]],
	[[      ████ ██████           █████      ██                    ]],
	[[     ███████████             █████                            ]],
	[[     █████████ ███████████████████ ███   ███████████  ]],
	[[    █████████  ███    █████████████ █████ ██████████████  ]],
	[[   █████████ ██████████ █████████ █████ █████ ████ █████  ]],
	[[ ███████████ ███    ███ █████████ █████ █████ ████ █████ ]],
	[[██████  █████████████████████ ████ █████ █████ ████ ██████]],
}

-- Make the header a bit more fun with some color!
local function colorize_header()
	local catppuccin = require("catppuccin.palettes").get_palette()
	local colors = {
		catppuccin.red,
		catppuccin.red,
		catppuccin.peach,
		catppuccin.yellow,
		catppuccin.green,
		catppuccin.sky,
		catppuccin.blue,
		catppuccin.mauve,
		catppuccin.overlay0,
	}
	for i, color in pairs(colors) do
		local cmd = "hi StartLogo" .. i .. " guifg=" .. color
		vim.cmd(cmd)
	end

	local lines = {}

	for i, chars in pairs(header) do
		local line = {
			type = "text",
			val = chars,
			opts = {
				hl = "StartLogo" .. i,
				shrink_margin = false,
				position = "center",
			},
		}

		table.insert(lines, line)
	end

	return lines
end

dashboard.section.buttons.val = {
	dashboard.button("f", " " .. " Find file", ":Telescope find_files <CR>"),
	dashboard.button("e", " " .. " New file", ":ene <BAR> startinsert <CR>"),
	dashboard.button("p", " " .. " Find project", ":lua require('telescope').extensions.projects.projects()<CR>"),
	dashboard.button("r", " " .. " Recent files", ":Telescope oldfiles <CR>"),
	dashboard.button("t", " " .. " Find text", ":Telescope live_grep <CR>"),
	dashboard.button("c", " " .. " Config", ":e ~/.config/nvim/init.lua <CR>"),
	dashboard.button("q", " " .. " Quit", ":qa<CR>"),
}

-- Everyone could use a good fortune cookie from time to time, right?
dashboard.section.footer.val = fortune()
dashboard.section.footer.opts.hl = "StartLogo9"

-- Hide all the unnecessary visual elements while on the dashboard, and add
-- them back when leaving the dashboard.
local group = vim.api.nvim_create_augroup("CleanDashboard", {})

vim.api.nvim_create_autocmd("User", {
	group = group,
	pattern = "AlphaReady",
	callback = function()
		vim.opt.showtabline = 0
		vim.opt.showmode = false
		vim.opt.laststatus = 0
		vim.opt.showcmd = false
		vim.opt.ruler = false
	end,
})

vim.api.nvim_create_autocmd("BufUnload", {
	group = group,
	pattern = "<buffer>",
	callback = function()
		vim.opt.showtabline = 2
		vim.opt.showmode = true
		vim.opt.laststatus = 3
		vim.opt.showcmd = true
		vim.opt.ruler = true
	end,
})

alpha.setup({
	layout = {
		{ type = "padding", val = 8 },
		{ type = "group", val = colorize_header() },
		{ type = "padding", val = 3 },
		dashboard.section.buttons,
		{ type = "padding", val = 1 },
		dashboard.section.footer,
	},
	opts = { margin = 5 },
})


================================================
FILE: .config/nvim/lua/user/autocommands.lua
================================================
-- Use 'q' to quit from common plugins
vim.api.nvim_create_autocmd({ "FileType" }, {
  pattern = { "qf", "help", "man", "lspinfo", "spectre_panel", "lir" },
  callback = function()
    vim.cmd [[
      nnoremap <silent> <buffer> q :close<CR> 
      set nobuflisted 
    ]]
  end,
})

-- Remove statusline and tabline when in Alpha
vim.api.nvim_create_autocmd({ "User" }, {
  pattern = { "AlphaReady" },
  callback = function()
    vim.cmd [[
      set showtabline=0 | autocmd BufUnload <buffer> set showtabline=2
      set laststatus=0 | autocmd BufUnload <buffer> set laststatus=3
    ]]
  end,
})

-- Set wrap and spell in markdown and gitcommit
vim.api.nvim_create_autocmd({ "FileType" }, {
  pattern = { "gitcommit", "markdown" },
  callback = function()
    vim.opt_local.wrap = true
    vim.opt_local.spell = true
  end,
})

vim.cmd "autocmd BufEnter * ++nested if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif"

-- Fixes Autocomment
vim.api.nvim_create_autocmd({ "BufWinEnter" }, {
  callback = function()
    vim.cmd "set formatoptions-=cro"
  end,
})

-- Highlight Yanked Text
vim.api.nvim_create_autocmd({ "TextYankPost" }, {
  callback = function()
    vim.highlight.on_yank { higroup = "Visual", timeout = 200 }
  end,
})


vim.api.nvim_create_autocmd({ "InsertEnter" }, {
  callback = function()
    vim.opt_local.relativenumber = false
  end,
})

vim.api.nvim_create_autocmd({ "InsertLeave" }, {
  callback = function()
    vim.opt_local.relativenumber = true
  end,
})


================================================
FILE: .config/nvim/lua/user/autopairs.lua
================================================
-- Setup nvim-cmp.
local status_ok, npairs = pcall(require, "nvim-autopairs")
if not status_ok then
  return
end

npairs.setup {
  check_ts = true, -- treesitter integration
  disable_filetype = { "TelescopePrompt" },
}

local cmp_autopairs = require "nvim-autopairs.completion.cmp"
local cmp_status_ok, cmp = pcall(require, "cmp")
if not cmp_status_ok then
  return
end
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done {})


================================================
FILE: .config/nvim/lua/user/autotag.lua
================================================
local status_ok, autotag = pcall(require, "nvim-ts-autotag")
if not status_ok then
  return
end

autotag.setup()


================================================
FILE: .config/nvim/lua/user/bufferline.lua
================================================
local status_ok, bufferline = pcall(require, "bufferline")
if not status_ok then
	return
end

bufferline.setup({
	options = {
		close_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions"
		right_mouse_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions"
		offsets = { { filetype = "NvimTree", text = "", padding = 1 } },
		separator_style = "thin", -- | "thick" | "thin" | { 'any', 'any' },
		numbers = "ordinal",
		diagnostics = "nvim_lsp",
	},
	highlights = {
		fill = {
			fg = { attribute = "fg", highlight = "#ff0000" },
			bg = { attribute = "bg", highlight = "TabLine" },
		},
		background = {
			fg = { attribute = "fg", highlight = "TabLine" },
			bg = { attribute = "bg", highlight = "TabLine" },
		},

		buffer_visible = {
			fg = { attribute = "fg", highlight = "TabLine" },
			bg = { attribute = "bg", highlight = "TabLine" },
		},

		close_button = {
			fg = { attribute = "fg", highlight = "TabLine" },
			bg = { attribute = "bg", highlight = "TabLine" },
		},
		close_button_visible = {
			fg = { attribute = "fg", highlight = "TabLine" },
			bg = { attribute = "bg", highlight = "TabLine" },
		},

		tab_selected = {
			fg = { attribute = "fg", highlight = "Normal" },
			bg = { attribute = "bg", highlight = "Normal" },
		},
		tab = {
			fg = { attribute = "fg", highlight = "TabLine" },
			bg = { attribute = "bg", highlight = "TabLine" },
		},
		tab_close = {
			fg = { attribute = "fg", highlight = "TabLineSel" },
			bg = { attribute = "bg", highlight = "Normal" },
		},

		duplicate_selected = {
			fg = { attribute = "fg", highlight = "TabLineSel" },
			bg = { attribute = "bg", highlight = "TabLineSel" },
			italic = true,
		},
		duplicate_visible = {
			fg = { attribute = "fg", highlight = "TabLine" },
			bg = { attribute = "bg", highlight = "TabLine" },
			italic = true,
		},
		duplicate = {
			fg = { attribute = "fg", highlight = "TabLine" },
			bg = { attribute = "bg", highlight = "TabLine" },
			italic = true,
		},

		modified = {
			fg = { attribute = "fg", highlight = "TabLine" },
			bg = { attribute = "bg", highlight = "TabLine" },
		},
		modified_selected = {
			fg = { attribute = "fg", highlight = "Normal" },
			bg = { attribute = "bg", highlight = "Normal" },
		},
		modified_visible = {
			fg = { attribute = "fg", highlight = "TabLine" },
			bg = { attribute = "bg", highlight = "TabLine" },
		},

		separator = {
			fg = { attribute = "bg", highlight = "TabLine" },
			bg = { attribute = "bg", highlight = "TabLine" },
		},
		separator_selected = {
			fg = { attribute = "bg", highlight = "Normal" },
			bg = { attribute = "bg", highlight = "Normal" },
		},
		indicator_selected = {
			fg = { attribute = "fg", highlight = "LspDiagnosticsDefaultHint" },
			bg = { attribute = "bg", highlight = "Normal" },
		},
	},
})

vim.cmd([[
nnoremap <silent><leader>1 <cmd>lua require("bufferline").go_to_buffer(1, true)<cr>
nnoremap <silent><leader>2 <cmd>lua require("bufferline").go_to_buffer(2, true)<cr>
nnoremap <silent><leader>3 <cmd>lua require("bufferline").go_to_buffer(3, true)<cr>
nnoremap <silent><leader>4 <cmd>lua require("bufferline").go_to_buffer(4, true)<cr>
nnoremap <silent><leader>5 <cmd>lua require("bufferline").go_to_buffer(5, true)<cr>
nnoremap <silent><leader>6 <cmd>lua require("bufferline").go_to_buffer(6, true)<cr>
nnoremap <silent><leader>7 <cmd>lua require("bufferline").go_to_buffer(7, true)<cr>
nnoremap <silent><leader>8 <cmd>lua require("bufferline").go_to_buffer(8, true)<cr>
nnoremap <silent><leader>9 <cmd>lua require("bufferline").go_to_buffer(9, true)<cr>
nnoremap <silent><leader>0 <cmd>lua require("bufferline").go_to_buffer(10, true)<cr>
nnoremap <silent><leader>$ <cmd>lua require("bufferline").go_to_buffer(-1, true)<cr>
]])


================================================
FILE: .config/nvim/lua/user/cmp.lua
================================================
local cmp_status_ok, cmp = pcall(require, "cmp")
if not cmp_status_ok then
	return
end

local snip_status_ok, luasnip = pcall(require, "luasnip")
if not snip_status_ok then
	return
end

require("luasnip/loaders/from_vscode").lazy_load()

local check_backspace = function()
	local col = vim.fn.col(".") - 1
	return col == 0 or vim.fn.getline("."):sub(col, col):match("%s")
end

local kind_icons = {
	Text = "",
	Method = "",
	Function = "",
	Constructor = "",
	Field = "",
	Variable = "",
	Class = "",
	Interface = "",
	Module = "",
	Property = "",
	Unit = "",
	Value = "",
	Enum = "",
	Keyword = "",
	Snippet = "",
	Color = "",
	File = "",
	Reference = "",
	Folder = "",
	EnumMember = "",
	Constant = "",
	Struct = "",
	Event = "",
	Operator = "",
	TypeParameter = "",
}

cmp.setup({
	snippet = {
		expand = function(args)
			luasnip.lsp_expand(args.body) -- For `luasnip` users.
		end,
	},

	mapping = cmp.mapping.preset.insert({
		["<C-k>"] = cmp.mapping.select_prev_item(),
		["<C-j>"] = cmp.mapping.select_next_item(),
		["<C-b>"] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }),
		["<C-f>"] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }),
		["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
		["<C-e>"] = cmp.mapping({
			i = cmp.mapping.abort(),
			c = cmp.mapping.close(),
		}),
		-- Accept currently selected item. If none selected, `select` first item.
		-- Set `select` to `false` to only confirm explicitly selected items.
		["<CR>"] = cmp.mapping.confirm({ select = false }),
		["<Tab>"] = cmp.mapping(function(fallback)
			if cmp.visible() then
				cmp.select_next_item()
			elseif luasnip.expandable() then
				luasnip.expand()
			elseif luasnip.expand_or_jumpable() then
				luasnip.expand_or_jump()
			elseif check_backspace() then
				fallback()
			else
				fallback()
			end
		end, {
			"i",
			"s",
		}),
		["<S-Tab>"] = cmp.mapping(function(fallback)
			if cmp.visible() then
				cmp.select_prev_item()
			elseif luasnip.jumpable(-1) then
				luasnip.jump(-1)
			else
				fallback()
			end
		end, {
			"i",
			"s",
		}),
	}),
	formatting = {
		fields = { "kind", "abbr", "menu" },
		format = function(entry, vim_item)
			vim_item.kind = kind_icons[vim_item.kind]
			vim_item.menu = ({
				nvim_lsp = "",
				nvim_lua = "",
				luasnip = "",
				buffer = "",
				path = "",
				emoji = "",
				cmp_tabnine = "",
			})[entry.source.name]
			return vim_item
		end,
	},
	sources = {
		{ name = "nvim_lsp_signature_help" },
		{ name = "nvim_lsp" },
		{ name = "nvim_lua" },
		{ name = "luasnip" },
		{ name = "buffer" },
		{ name = "path" },
		{ name = "cmp_tabnine" },
	},
	confirm_opts = {
		behavior = cmp.ConfirmBehavior.Replace,
		select = false,
	},
	window = {
		completion = cmp.config.window.bordered(),
		documentation = cmp.config.window.bordered(),
	},
	enabled = function()
		return vim.api.nvim_buf_get_option(0, "buftype") ~= "prompt" or require("cmp_dap").is_dap_buffer()
	end,
	experimental = {
		ghost_text = true,
	},
})

cmp.setup.cmdline(":", {
	mapping = cmp.mapping.preset.cmdline(),
	sources = cmp.config.sources({
		{ name = "path" },
	}, {
		{ name = "cmdline" },
	}),
})

cmp.setup.filetype({ "dap-repl", "dapui_watches" }, {
	sources = {
		{ name = "dap" },
	},
})

cmp.setup.cmdline("/", {
	mapping = cmp.mapping.preset.cmdline(),
	sources = {
		{ name = "buffer" },
	},
})


================================================
FILE: .config/nvim/lua/user/colorizer.lua
================================================
local status_ok, colorizer = pcall(require, "colorizer")
if not status_ok then
  return
end

colorizer.setup()


================================================
FILE: .config/nvim/lua/user/colorscheme.lua
================================================
local status_ok, theme = pcall(require, "catppuccin")
if not status_ok then
	return
end

vim.g.catppuccin_flavour = "mocha"

theme.setup({
	transparent_background = false,
	integrations = {
		dap = {
			enabled = true,
			enable_ui = true,
		},
		vim_sneak = true,
		ts_rainbow = true,
		which_key = true,
	},
})

vim.cmd([[colorscheme catppuccin]])

local colors = require("catppuccin.palettes").get_palette()

vim.cmd([[
hi def IlluminatedWordText guibg=#45475A
hi def IlluminatedWordWrite guibg=#45475A
hi def IlluminatedWordRead guibg=#45475A
]])

vim.g.terminal_color_0 = colors.surface1
vim.g.terminal_color_8 = colors.surface2

vim.g.terminal_color_1 = colors.red
vim.g.terminal_color_9 = colors.red

vim.g.terminal_color_2 = colors.green
vim.g.terminal_color_10 = colors.green

vim.g.terminal_color_3 = colors.yellow
vim.g.terminal_color_11 = colors.yellow

vim.g.terminal_color_4 = colors.blue
vim.g.terminal_color_12 = colors.blue

vim.g.terminal_color_5 = colors.magenta
vim.g.terminal_color_13 = colors.magenta

vim.g.terminal_color_6 = colors.cyan
vim.g.terminal_color_14 = colors.cyan

vim.g.terminal_color_7 = colors.subtext1
vim.g.terminal_color_15 = colors.subtext0


================================================
FILE: .config/nvim/lua/user/comment.lua
================================================
local status_ok, comment = pcall(require, "Comment")
if not status_ok then
	return
end

comment.setup({
	pre_hook = require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook(),
})


================================================
FILE: .config/nvim/lua/user/cutlass.lua
================================================
local status_ok, cutlass = pcall(require, "cutlass")
if not status_ok then
	return
end

cutlass.setup({
	cut_key = "m",
	exclude = { "ns", "nS" },
})


================================================
FILE: .config/nvim/lua/user/dap.lua
================================================
local dap_status_ok, dap = pcall(require, "dap")
if not dap_status_ok then
	return
end

local dap_ui_status_ok, dapui = pcall(require, "dapui")
if not dap_ui_status_ok then
	return
end

local python_ok, python = pcall(require, "dap-python")
if not python_ok then
	return
end

python.setup("/usr/bin/python")
python.test_runner = "pytest"

local js_ok, js = pcall(require, "dap-vscode-js")
if not js_ok then
	return
end

js.setup({
	adapters = { "pwa-node" },
})

for _, language in ipairs({ "typescript", "javascript" }) do
	dap.configurations[language] = {
		{
			type = "pwa-node",
			request = "launch",
			name = "Launch file",
			program = "${file}",
			cwd = "${workspaceFolder}",
		},
		{
			type = "pwa-node",
			request = "attach",
			name = "Attach",
			processId = require("dap.utils").pick_process,
			cwd = "${workspaceFolder}",
		},
		{
			type = "pwa-node",
			request = "launch",
			name = "Debug Jest Tests",
			-- trace = true, -- include debugger info
			runtimeExecutable = "node",
			runtimeArgs = {
				"./node_modules/jest/bin/jest.js",
				"--runInBand",
			},
			rootPath = "${workspaceFolder}",
			cwd = "${workspaceFolder}",
			console = "integratedTerminal",
			internalConsoleOptions = "neverOpen",
		},
	}
end

dapui.setup({
	layouts = {
		{

			elements = {
				{
					id = "scopes",
					size = 0.25, -- Can be float or integer > 1
				},
				{ id = "breakpoints", size = 0.25 },
			},
			size = 40,
			position = "right", -- Can be "left", "right", "top", "bottom"
		},
	},
})

vim.fn.sign_define("DapBreakpoint", { text = "", texthl = "DiagnosticSignError", linehl = "", numhl = "" })

dap.listeners.after.event_initialized["dapui_config"] = function()
	dapui.open()
end

dap.listeners.before.event_terminated["dapui_config"] = function()
	dapui.close()
end

dap.listeners.before.event_exited["dapui_config"] = function()
	dapui.close()
end


================================================
FILE: .config/nvim/lua/user/diffview.lua
================================================
local status_ok, diff = pcall(require, "diffview")
if not status_ok then
  return
end

diff.setup()


================================================
FILE: .config/nvim/lua/user/gitsigns.lua
================================================
local status_ok, gitsigns = pcall(require, "gitsigns")
if not status_ok then
  return
end

gitsigns.setup {
  signs = {
    add = { hl = "GitSignsAdd", text = "▎", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" },
    change = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
    delete = { hl = "GitSignsDelete", text = "契", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
    topdelete = { hl = "GitSignsDelete", text = "契", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
    changedelete = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
  },
}


================================================
FILE: .config/nvim/lua/user/illuminate.lua
================================================
local status_ok, illuminate = pcall(require, "illuminate")
if not status_ok then
	return
end

illuminate.configure({
	filetypes_denylist = {
		"alpha",
		"NvimTree",
		"qf"
	},
})

vim.api.nvim_set_keymap("n", "<a-n>", '<cmd>lua require"illuminate".next_reference{wrap=true}<cr>', { noremap = true })
vim.api.nvim_set_keymap(
	"n",
	"<a-p>",
	'<cmd>lua require"illuminate".next_reference{reverse=true,wrap=true}<cr>',
	{ noremap = true }
)


================================================
FILE: .config/nvim/lua/user/impatient.lua
================================================
local status_ok, impatient = pcall(require, "impatient")
if not status_ok then
  return
end

impatient.enable_profile()


================================================
FILE: .config/nvim/lua/user/indentline.lua
================================================
local status_ok, indent_blankline = pcall(require, "indent_blankline")
if not status_ok then
  return
end

indent_blankline.setup {
  char = "▏",
  show_trailing_blankline_indent = false,
  show_first_indent_level = true,
  use_treesitter = true,
  show_current_context = true,
  buftype_exclude = { "terminal", "nofile" },
  filetype_exclude = {
    "help",
    "packer",
    "NvimTree",
  },
}


================================================
FILE: .config/nvim/lua/user/keymaps.lua
================================================
-- Shorten function name
local keymap = vim.keymap.set
-- Silent keymap option
local opts = { silent = true }

--Remap space as leader key
keymap("", "<Space>", "<Nop>", opts)
vim.g.mapleader = " "

vim.g.camelcasemotion_key = "-"
vim.cmd([[ let g:sneak#label = 1 ]])

-- Modes
--   normal_mode = "n",
--   insert_mode = "i",
--   visual_mode = "v",
--   visual_block_mode = "x",
--   term_mode = "t",
--   command_mode = "c",

-- Normal --
-- Better window navigation
keymap("n", "<C-h>", "<C-w>h", opts)
keymap("n", "<C-j>", "<C-w>j", opts)
keymap("n", "<C-k>", "<C-w>k", opts)
keymap("n", "<C-l>", "<C-w>l", opts)

-- Resize with arrows
keymap("n", "<C-Up>", "<cmd> lua require('smart-splits').resize_up(2)<CR>", opts)
keymap("n", "<C-Down>", "<cmd> lua require('smart-splits').resize_down(2)<CR>", opts)
keymap("n", "<C-Left>", "<cmd> lua require('smart-splits').resize_left(2)<CR>", opts)
keymap("n", "<C-Right>", "<cmd> lua require('smart-splits').resize_right(2)<CR>", opts)

-- Navigate buffers
keymap("n", "<S-l>", ":bnext<CR>", opts)
keymap("n", "<S-h>", ":bprevious<CR>", opts)

-- Stop search highlight on ESC
keymap("n", "<ESC>", ":nohlsearch<CR>", opts)

-- Move text up and down
keymap("n", "<A-k>", "<Esc>:m .-2<CR>==", opts)
keymap("n", "<A-j>", "<Esc>:m .+1<CR>==", opts)

-- Close buffers
keymap("n", "<S-q>", "<cmd>Bdelete!<CR>", opts)

-- Better paste
keymap("v", "p", '"_dP', opts)

-- Insert new line without insert mode
keymap("n", "go", "o<ESC>", opts)
keymap("n", "gO", "O<ESC>", opts)

-- Remap marks
keymap("n", "gm", "m", opts)

-- Insert --
-- Press jk fast to enter
keymap("i", "jk", "<ESC>", opts)

-- Paste
keymap("i", "<C-v>", "<ESC>pi", opts)

-- Move in insert mode
keymap("i", "<A-h>", "<Left>", opts)
keymap("i", "<A-j>", "<Down>", opts)
keymap("i", "<A-k>", "<Up>", opts)
keymap("i", "<A-l>", "<Right>", opts)

-- Delete word
keymap("i", "<C-BS>", "<C-w>", opts)

keymap("t", "<C-BS>", "<C-w>", opts)

-- Visual --
-- Stay in indent mode
keymap("v", "<", "<gv", opts)
keymap("v", ">", ">gv", opts)

-- Move text up and down
keymap("v", "<A-j>", ":m .+1<CR>==", opts)
keymap("v", "<A-k>", ":m .-2<CR>==", opts)

-- Visual Block --
-- Move text up and down
keymap("x", "J", ":move '>+1<CR>gv-gv", opts)
keymap("x", "K", ":move '<-2<CR>gv-gv", opts)


================================================
FILE: .config/nvim/lua/user/live-command.lua
================================================
local status_ok, live = pcall(require, "live-command")
if not status_ok then
	return
end

live.setup({
	commands = {
		Norm = { cmd = "norm" },
		G = { cmd = "g" },
		S = { cmd = "s" },
		Mac = {
			cmd = "norm",
			-- This will transform ":5Mac a" into ":norm 5@a"
			args = function(opts)
				return (opts.count == -1 and "" or opts.count) .. "@" .. opts.args
			end,
			range = "",
		},
	},
})


================================================
FILE: .config/nvim/lua/user/lsp/handlers.lua
================================================
local M = {}

local status_cmp_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp")
if not status_cmp_ok then
	return
end

M.capabilities = cmp_nvim_lsp.default_capabilities()

M.setup = function()
	local signs = {
		{ name = "DiagnosticSignError", text = "" },
		{ name = "DiagnosticSignWarn", text = "" },
		{ name = "DiagnosticSignHint", text = "" },
		{ name = "DiagnosticSignInfo", text = "" },
	}

	for _, sign in ipairs(signs) do
		vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" })
	end

	local config = {
		virtual_text = false, -- disable virtual text
		signs = {
			active = signs, -- show signs
		},
		update_in_insert = true,
		underline = true,
		severity_sort = true,
		float = {
			focusable = true,
			style = "minimal",
			border = "rounded",
			source = "always",
			header = "",
			prefix = "",
		},
	}

	vim.diagnostic.config(config)

	vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
		border = "rounded",
	})

	vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
		border = "rounded",
	})
end

local function lsp_keymaps(bufnr)
	local opts = { noremap = true, silent = true }
	local keymap = vim.api.nvim_buf_set_keymap
	keymap(bufnr, "n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts)
	keymap(bufnr, "n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts)
	keymap(bufnr, "n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
	keymap(bufnr, "n", "gI", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
	keymap(bufnr, "n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
	keymap(bufnr, "n", "gl", "<cmd>lua vim.diagnostic.open_float()<CR>", opts)
end

M.on_attach = function(client, bufnr)
	lsp_keymaps(bufnr)
	local status_ok, illuminate = pcall(require, "illuminate")
	if not status_ok then
		return
	end
	illuminate.on_attach(client)
end

return M


================================================
FILE: .config/nvim/lua/user/lsp/init.lua
================================================
local status_ok, _ = pcall(require, "lspconfig")
if not status_ok then
	return
end

require("user.lsp.mason")
require("user.lsp.handlers").setup()
require("user.lsp.null-ls")


================================================
FILE: .config/nvim/lua/user/lsp/mason.lua
================================================
local status_ok, mason = pcall(require, "mason")
if not status_ok then
	return
end

local servers = {
	"sumneko_lua",
	"cssls",
	"html",
	"tsserver",
	"pyright",
	"bashls",
	"jsonls",
	"hls",
	"rust_analyzer",
}

local mason_lspconfig_status_ok, mason_lspconfig = pcall(require, "mason-lspconfig")
if not mason_lspconfig_status_ok then
	return
end

mason.setup()
mason_lspconfig.setup()

local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig")
if not lspconfig_status_ok then
	return
end

local opts = {}

for _, server in pairs(servers) do
	opts = {
		on_attach = require("user.lsp.handlers").on_attach,
		capabilities = require("user.lsp.handlers").capabilities,
	}

	if server == "sumneko_lua" then
		local sumneko_opts = require("user.lsp.settings.sumneko_lua")
		opts = vim.tbl_deep_extend("force", sumneko_opts, opts)
	elseif server == "pyright" then
		local pyright_opts = require("user.lsp.settings.pyright")
		opts = vim.tbl_deep_extend("force", pyright_opts, opts)
	elseif server == "hls" then
		local hls_opts = require("user.lsp.settings.hls")
		opts = vim.tbl_deep_extend("force", hls_opts, opts)
	elseif server == "jsonls" then
		local jsonls_opts = require("user.lsp.settings.jsonls")
		opts = vim.tbl_deep_extend("force", jsonls_opts, opts)
	end

	lspconfig[server].setup(opts)
end


================================================
FILE: .config/nvim/lua/user/lsp/null-ls.lua
================================================
local null_ls_status_ok, null_ls = pcall(require, "null-ls")
if not null_ls_status_ok then
	return
end

-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
local formatting = null_ls.builtins.formatting
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
local diagnostics = null_ls.builtins.diagnostics

local augroup = vim.api.nvim_create_augroup("LspFormatting", {})

null_ls.setup({
	debug = false,
	sources = {
		formatting.prettierd.with({
			extra_filetypes = { "toml" },
			env = {
				PRETTIERD_DEFAULT_CONFIG = vim.fn.expand("~/.config/nvim/lua/user/lsp/settings/prettier.json"),
			},
		}),
		formatting.rustfmt,
		formatting.black.with({ extra_args = { "--fast" } }),
		formatting.stylua,
		formatting.shfmt.with({
			extra_filetypes = { "zsh" },
		}),
		diagnostics.shellcheck,
		diagnostics.pylint,
	},
	on_attach = function(client, bufnr)
		if client.supports_method("textDocument/formatting") then
			vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
			vim.api.nvim_create_autocmd("BufWritePre", {
				group = augroup,
				buffer = bufnr,
				callback = function()
					vim.lsp.buf.format({
						bufnr = bufnr,
						async = true,
						filter = function(client)
							return client.name == "null-ls"
						end,
					})
				end,
			})
		end
	end,
})


================================================
FILE: .config/nvim/lua/user/lsp/settings/hls.lua
================================================
return {
  settings = {
    haskell = {
      plugin = {
        rename = {
          config = {
            crossModule = true
          }
        }
      },
    },
  },
}


================================================
FILE: .config/nvim/lua/user/lsp/settings/jsonls.lua
================================================
return {
	settings = {
		json = {
			schemas = require('schemastore').json.schemas(),
			validate = { enable = true },
		},
	}
}


================================================
FILE: .config/nvim/lua/user/lsp/settings/prettier.json
================================================
{
    "tabWidth": 4
}


================================================
FILE: .config/nvim/lua/user/lsp/settings/pyright.lua
================================================
return {
  settings = {
    python = {
      analysis = {
        typeCheckingMode = "off",
      },
    },
  },
}


================================================
FILE: .config/nvim/lua/user/lsp/settings/sumneko_lua.lua
================================================
return {
  settings = {
    Lua = {
      diagnostics = {
        globals = { "vim" },
      },
      workspace = {
        library = {
          [vim.fn.expand "$VIMRUNTIME/lua"] = true,
          [vim.fn.stdpath "config" .. "/lua"] = true,
        },
      },
      telemetry = {
        enable = false,
      },
    },
  },
}


================================================
FILE: .config/nvim/lua/user/lualine.lua
================================================
local status_ok, lualine = pcall(require, "lualine")
if not status_ok then
	return
end

local null_ls_status_ok, null_ls = pcall(require, "null-ls")
if not null_ls_status_ok then
	return
end

local hide_in_width = function()
	return vim.fn.winwidth(0) > 80
end

local diagnostics = {
	"diagnostics",
	sources = { "nvim_diagnostic" },
	sections = { "error", "warn" },
	symbols = { error = " ", warn = " " },
	colored = false,
	always_visible = true,
}

local diff = {
	"diff",
	colored = false,
	symbols = { added = "樂", modified = " ", removed = " " },
	cond = hide_in_width,
}

local filetype = {
	"filetype",
	icons_enabled = true,
}

local location = {
	"location",
	padding = { right = 1, left = 0 },
}

local branch = { "branch", icon = "" }

local lsp = {
	function()
		local buf_clients = vim.lsp.buf_get_clients()
		if next(buf_clients) == nil then
			return "no lsp"
		end
		local buf_ft = vim.bo.filetype
		local buf_client_names = {}

		-- add client
		for _, client in pairs(buf_clients) do
			if client.name ~= "null-ls" then
				table.insert(buf_client_names, client.name)
			end
		end

		local s = require("null-ls.sources")
		local available_sources = s.get_available(buf_ft)
		local providers = {}
		for _, source in ipairs(available_sources) do
			for method in pairs(source.methods) do
				providers[method] = providers[method] or {}
				table.insert(providers[method], source.name)
			end
		end

		-- add formatter
		local supported_formatters = providers[null_ls.methods.FORMATTING] or {}
		vim.list_extend(buf_client_names, supported_formatters)

		-- add linter
		local supported_linters = providers[null_ls.methods.DIAGNOSTICS] or {}
		vim.list_extend(buf_client_names, supported_linters)

		local unique_client_names = vim.fn.uniq(buf_client_names)
		return table.concat(unique_client_names, ", ")
	end,
}

local spaces = function()
	return "spaces: " .. vim.api.nvim_buf_get_option(0, "shiftwidth")
end

lualine.setup({
	options = {
		globalstatus = true,
		icons_enabled = true,
		theme = "auto",
		component_separators = "|",
		section_separators = { left = "", right = "" },
		disabled_filetypes = { "alpha", "dashboard" },
		always_divide_middle = true,
	},
	sections = {
		lualine_a = { "mode" },
		lualine_b = { branch },
		lualine_c = { diagnostics },
		lualine_x = { lsp, diff, "encoding", spaces, filetype },
		lualine_y = { "progress" },
		lualine_z = { location },
	},
})


================================================
FILE: .config/nvim/lua/user/nvim-tree.lua
================================================
local status_ok, nvim_tree = pcall(require, "nvim-tree")
if not status_ok then
  return
end

local config_status_ok, nvim_tree_config = pcall(require, "nvim-tree.config")
if not config_status_ok then
  return
end

local tree_cb = nvim_tree_config.nvim_tree_callback

nvim_tree.setup {
  update_focused_file = {
    enable = true,
    update_cwd = true,
  },
  renderer = {
    root_folder_modifier = ":t",
    icons = {
      glyphs = {
        default = "",
        symlink = "",
        folder = {
          arrow_open = "",
          arrow_closed = "",
          default = "",
          open = "",
          empty = "",
          empty_open = "",
          symlink = "",
          symlink_open = "",
        },
        git = {
          unstaged = "",
          staged = "S",
          unmerged = "",
          renamed = "➜",
          untracked = "U",
          deleted = "",
          ignored = "◌",
        },
      },
    },
  },
  diagnostics = {
    enable = true,
    show_on_dirs = true,
    icons = {
      hint = "",
      info = "",
      warning = "",
      error = "",
    },
  },
  view = {
    width = 30,
    side = "left",
    mappings = {
      list = {
        { key = { "l", "<CR>", "o" }, cb = tree_cb "edit" },
        { key = "h", cb = tree_cb "close_node" },
        { key = "v", cb = tree_cb "vsplit" },
      },
    },
  },
}


================================================
FILE: .config/nvim/lua/user/options.lua
================================================
vim.opt.backup = false -- creates a backup file
vim.opt.clipboard = "unnamedplus" -- allows neovim to access the system clipboard
vim.opt.cmdheight = 1 -- more space in the neovim command line for displaying messages
vim.opt.completeopt = { "menuone", "noselect" } -- mostly just for cmp
vim.opt.conceallevel = 0 -- so that `` is visible in markdown files
vim.opt.fileencoding = "utf-8" -- the encoding written to a file
vim.opt.hlsearch = true -- highlight all matches on previous search pattern
vim.opt.ignorecase = true -- ignore case in search patterns
vim.opt.mouse = "a" -- allow the mouse to be used in neovim
vim.opt.pumheight = 10 -- pop up menu height
vim.opt.showmode = false -- we don't need to see things like -- INSERT -- anymore
vim.opt.showtabline = 0 -- always show tabs
vim.opt.smartcase = true -- smart case
vim.opt.smartindent = true -- make indenting smarter again
vim.opt.splitbelow = true -- force all horizontal splits to go below current window
vim.opt.splitright = true -- force all vertical splits to go to the right of current window
vim.opt.swapfile = false -- creates a swapfile
vim.opt.termguicolors = true -- set term gui colors (most terminals support this)
vim.opt.timeoutlen = 300 -- time to wait for a mapped sequence to complete (in milliseconds)
vim.opt.undofile = true -- enable persistent undo
vim.opt.updatetime = 300 -- faster completion (4000ms default)
vim.opt.writebackup = false -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited
vim.opt.expandtab = true -- convert tabs to spaces
vim.opt.shiftwidth = 4 -- the number of spaces inserted for each indentation
vim.opt.tabstop = 4 -- insert 2 spaces for a tab
vim.opt.cursorline = true -- highlight the current line
vim.opt.relativenumber = true -- set relative numbered lines
vim.opt.number = true -- set numbered lines
vim.opt.laststatus = 3
vim.opt.showcmd = false
vim.opt.ruler = false
vim.opt.numberwidth = 2 -- set number column width to 2 {default 4}
vim.opt.signcolumn = "yes" -- always show the sign column, otherwise it would shift the text each time
vim.opt.wrap = false -- display lines as one long line
vim.opt.scrolloff = 8 -- is one of my fav
vim.opt.sidescrolloff = 8
vim.opt.guifont = "monospace:h7" -- the font used in graphical neovim applications
vim.opt.fillchars.eob = " "
vim.opt.shortmess:append("c")
vim.opt.whichwrap:append("<,>,[,],h,l")
vim.opt.iskeyword:append("-")

vim.g.neovide_transparency = 0.8
vim.g.neovide_floating_opacity = 0.9


================================================
FILE: .config/nvim/lua/user/plugins.lua
================================================
local fn = vim.fn

-- Automatically install packer
local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim"
if fn.empty(fn.glob(install_path)) > 0 then
	PACKER_BOOTSTRAP = fn.system({
		"git",
		"clone",
		"--depth",
		"1",
		"https://github.com/wbthomason/packer.nvim",
		install_path,
	})
	print("Installing packer close and reopen Neovim...")
	vim.cmd([[packadd packer.nvim]])
end

-- Autocommand that reloads neovim whenever you save the plugins.lua file
vim.cmd([[
  augroup packer_user_config
    autocmd!
    autocmd BufWritePost plugins.lua source <afile> | PackerSync
  augroup end
]])

-- Use a protected call so we don't error out on first use
local status_ok, packer = pcall(require, "packer")
if not status_ok then
	return
end

-- Have packer use a popup window
packer.init({
	display = {
		open_fn = function()
			return require("packer.util").float({ border = "rounded" })
		end,
	},
})

-- Install your plugins here
return packer.startup(function(use)
	-- My plugins here
	use({ "wbthomason/packer.nvim" }) -- Have packer manage itself
	use({ "nvim-lua/plenary.nvim" }) -- Useful lua functions used by lots of plugins
	use("rcarriga/nvim-notify")
	use("tpope/vim-repeat")
	use({ "JoosepAlviste/nvim-ts-context-commentstring" })
	use({ "moll/vim-bbye" })
	use({ "ahmedkhalf/project.nvim" })
	use({ "lewis6991/impatient.nvim" })

	use("ThePrimeagen/vim-be-good")

	-- UI
	use({ "goolord/alpha-nvim" })
	use({ "nvim-lualine/lualine.nvim" })
	use({ "lukas-reineke/indent-blankline.nvim" })
	use({ "akinsho/bufferline.nvim" })
	use("folke/which-key.nvim")
	-- use({ "stevearc/dressing.nvim" })
	use({ "norcalli/nvim-colorizer.lua" })
	use({ "akinsho/toggleterm.nvim", tag = "*" })
	use("windwp/nvim-spectre")
	use({ "kyazdani42/nvim-web-devicons" })
	use({ "kyazdani42/nvim-tree.lua" })
	use({
		"folke/trouble.nvim",
		requires = "kyazdani42/nvim-web-devicons",
	})
	use("mrjones2014/smart-splits.nvim")
	use("p00f/nvim-ts-rainbow")

	-- Movement
	-- use("ggandor/leap.nvim")
	use("justinmk/vim-sneak")
	use("bkad/CamelCaseMotion")
	use("andymass/vim-matchup")

	-- Editing
	use({
		"kylechui/nvim-surround",
		tag = "*", -- Use for stability; omit to use `main` branch for the latest features
	})
	use({ "Darazaki/indent-o-matic" })
	use("gbprod/cutlass.nvim")
	use("gbprod/substitute.nvim")
	use({ "numToStr/Comment.nvim" })
	use("windwp/nvim-ts-autotag")
	use({ "windwp/nvim-autopairs" }) -- Autopairs, integrates with both cmp and treesitter
	use("smjonas/live-command.nvim")

	-- Colorschemes
	use({ "catppuccin/nvim", as = "catppuccin" })

	-- cmp plugins
	use({ "hrsh7th/nvim-cmp" }) -- The completion plugin
	use({ "hrsh7th/cmp-buffer" }) -- buffer completions
	use({ "hrsh7th/cmp-path" }) -- path completions
	use({ "saadparwaiz1/cmp_luasnip" }) -- snippet completions
	use({ "hrsh7th/cmp-nvim-lsp" })
	use({ "hrsh7th/cmp-nvim-lua" })
	use({
		"tzachar/cmp-tabnine",
		run = "./install.sh",
		requires = "hrsh7th/nvim-cmp",
	})
	use("rcarriga/cmp-dap")
	use("hrsh7th/cmp-cmdline")
	use("hrsh7th/cmp-nvim-lsp-signature-help")

	-- snippets
	use({ "L3MON4D3/LuaSnip" }) --snippet engine
	use({ "rafamadriz/friendly-snippets" }) -- a bunch of snippets to use

	-- LSP
	use({ "neovim/nvim-lspconfig" }) -- enable LSP
	use({ "williamboman/mason.nvim" }) -- simple to use language server installer
	use("williamboman/mason-lspconfig.nvim")
	use({ "jose-elias-alvarez/null-ls.nvim" }) -- for formatters and linters
	use({ "RRethy/vim-illuminate" })
	use("b0o/schemastore.nvim")

	-- Testing
	use({
		"nvim-neotest/neotest",
		requires = {
			"nvim-lua/plenary.nvim",
			"nvim-treesitter/nvim-treesitter",
			"antoinemadec/FixCursorHold.nvim",
			"nvim-neotest/neotest-vim-test",
			"vim-test/vim-test",
			"haydenmeade/neotest-jest",
			"nvim-neotest/neotest-python",
		},
	})

	-- Text objects
	use("michaeljsmith/vim-indent-object")
	use("kana/vim-textobj-user")
	use("kana/vim-textobj-entire")
	use("nvim-treesitter/nvim-treesitter-textobjects")
	use("RRethy/nvim-treesitter-textsubjects")

	-- Telescope
	use({ "nvim-telescope/telescope.nvim" })
	use({ "nvim-telescope/telescope-fzf-native.nvim", run = "make" })

	-- Treesitter
	use({
		"nvim-treesitter/nvim-treesitter",
		run = ":TSUpdate",
	})
	use("nvim-treesitter/nvim-treesitter-context")

	-- Git
	use({ "lewis6991/gitsigns.nvim" })
	use("sindrets/diffview.nvim")

	-- DAP
	use({ "mfussenegger/nvim-dap" })
	use({ "rcarriga/nvim-dap-ui" })
	--[[ use({ "ravenxrz/DAPInstall.nvim" }) ]]
	use("mfussenegger/nvim-dap-python")
	use({ "mxsdev/nvim-dap-vscode-js", requires = { "mfussenegger/nvim-dap" } })
	use({
		"microsoft/vscode-js-debug",
		opt = true,
		run = "npm install --legacy-peer-deps && npm run compile",
	})

	-- Automatically set up your configuration after cloning packer.nvim
	-- Put this at the end after all plugins
	if PACKER_BOOTSTRAP then
		require("packer").sync()
	end
end)


================================================
FILE: .config/nvim/lua/user/project.lua
================================================
local status_ok, project = pcall(require, "project_nvim")
if not status_ok then
	return
end
project.setup()

local tele_status_ok, telescope = pcall(require, "telescope")
if not tele_status_ok then
	return
end

telescope.load_extension('projects')


================================================
FILE: .config/nvim/lua/user/smart-splits.lua
================================================
local status_ok, splits = pcall(require, "smart-splits")
if not status_ok then
	return
end

splits.setup({})


================================================
FILE: .config/nvim/lua/user/substitute.lua
================================================
local status_ok, substitute = pcall(require, "substitute")
if not status_ok then
	return
end

substitute.setup()

vim.keymap.set("n", "<leader>y", "<cmd>lua require('substitute').operator()<cr>", { noremap = true })
vim.keymap.set("n", "<leader>yy", "<cmd>lua require('substitute').line()<cr>", { noremap = true })
vim.keymap.set("n", "<leader>Y", "<cmd>lua require('substitute').eol()<cr>", { noremap = true })


================================================
FILE: .config/nvim/lua/user/surround.lua
================================================
local status_ok, surround = pcall(require, "nvim-surround")
if not status_ok then
	return
end

surround.setup()


================================================
FILE: .config/nvim/lua/user/telescope.lua
================================================
local status_ok, telescope = pcall(require, "telescope")
if not status_ok then
	return
end

local actions = require("telescope.actions")

telescope.setup({
	defaults = {

		prompt_prefix = " ",
		selection_caret = " ",
		path_display = { "smart" },
		file_ignore_patterns = { ".git/", "node_modules" },

		mappings = {
			i = {
				["<Down>"] = actions.cycle_history_next,
				["<Up>"] = actions.cycle_history_prev,
				["<C-j>"] = actions.move_selection_next,
				["<C-k>"] = actions.move_selection_previous,
				["<leader>c"] = actions.close,
			},
		},
	},
	extensions = {
		fzf = {
			fuzzy = true,
			override_generic_sorter = true,
			override_file_sorter = true,
			case_mode = "smart_case",
		},
	},
})

telescope.load_extension("fzf")


================================================
FILE: .config/nvim/lua/user/testing.lua
================================================
local status_ok, neotest = pcall(require, "neotest")
if not status_ok then
	return
end

neotest.setup({
	adapters = {
		require("neotest-python")({
			dap = { justMyCode = false },
		}),
		require("neotest-jest"),
		require("neotest-vim-test")({
			ignore_file_types = { "python", "javascript", "typescript" },
		}),
	},
})


================================================
FILE: .config/nvim/lua/user/toggleterm.lua
================================================
local status_ok, toggleterm = pcall(require, "toggleterm")
if not status_ok then
	return
end

toggleterm.setup({
	size = 20,
	open_mapping = [[<c-\>]],
	hide_numbers = true,
	shade_terminals = true,
	shading_factor = 2,
	start_in_insert = true,
	insert_mappings = true,
	persist_size = true,
	direction = "float",
	close_on_exit = true,
	shell = vim.o.shell,
	float_opts = {
		border = "curved",
	},
})

function _G.set_terminal_keymaps()
	local opts = { noremap = true }
	-- vim.api.nvim_buf_set_keymap(0, "t", "<esc>", [[<C-\><C-n>]], opts)
	vim.api.nvim_buf_set_keymap(0, "t", "<C-h>", [[<C-\><C-n><C-W>h]], opts)
	vim.api.nvim_buf_set_keymap(0, "t", "<C-j>", [[<C-\><C-n><C-W>j]], opts)
	vim.api.nvim_buf_set_keymap(0, "t", "<C-k>", [[<C-\><C-n><C-W>k]], opts)
	vim.api.nvim_buf_set_keymap(0, "t", "<C-l>", [[<C-\><C-n><C-W>l]], opts)
end

vim.cmd("autocmd! TermOpen term://* lua set_terminal_keymaps()")

local Terminal = require("toggleterm.terminal").Terminal
local lazygit = Terminal:new({ cmd = "lazygit", hidden = true })

function _LAZYGIT_TOGGLE()
	lazygit:toggle()
end


================================================
FILE: .config/nvim/lua/user/treesitter.lua
================================================
local status_ok, configs = pcall(require, "nvim-treesitter.configs")
if not status_ok then
	return
end

configs.setup({
	ensure_installed = "all", -- one of "all" or a list of languages
	ignore_install = { "" }, -- List of parsers to ignore installing
	highlight = {
		enable = true, -- false will disable the whole extension
		disable = {}, -- list of language that will be disabled
	},
	autopairs = {
		enable = true,
	},
	context_commentstring = {
		enable = true,
		enable_autocmd = false,
	},
	indent = { enable = true, disable = { "python", "css" } },
	matchup = {
		enable = true,
	},
	textobjects = {
		select = {
			enable = true,
			-- automatically jump forward to textobj, similar to targets.vim
			lookahead = true,

			keymaps = {
				-- you can use the capture groups defined in textobjects.scm
				["af"] = "@call.outer",
				["if"] = "@call.inner",
				["ab"] = "@block.outer",
				["ib"] = "@block.inner",
			},
		},
	},
	textsubjects = {
		enable = true,
		prev_selection = ",", -- (Optional) keymap to select the previous selection
		keymaps = {
			["."] = "textsubjects-smart",
			[";"] = "textsubjects-container-outer",
			["i;"] = "textsubjects-container-inner",
		},
	},
	rainbow = {
		enable = true,
		extended_mode = true, -- Also highlight non-bracket delimiters like html tags, boolean or table: lang -> boolean
		max_file_lines = nil, -- Do not enable for files with more than n lines, int
	}
})

vim.g.matchup_matchparen_offscreen = { method = "popup" }


================================================
FILE: .config/nvim/lua/user/trouble.lua
================================================
local status_ok, trouble = pcall(require, "trouble")
if not status_ok then
  return
end

trouble.setup()




================================================
FILE: .config/nvim/lua/user/whichkey.lua
================================================
local status_ok, which_key = pcall(require, "which-key")
if not status_ok then
	return
end

local setup = {
	plugins = {
		marks = true, -- shows a list of your marks on ' and `
		registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode
		spelling = {
			enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions
			suggestions = 20, -- how many suggestions should be shown in the list?
		},
		-- the presets plugin, adds help for a bunch of default keybindings in Neovim
		-- No actual key bindings are created
		presets = {
			operators = false, -- adds help for operators like d, y, ... and registers them for motion / text object completion
			motions = true, -- adds help for motions
			text_objects = true, -- help for text objects triggered after entering an operator
			windows = true, -- default bindings on <c-w>
			nav = true, -- misc bindings to work with windows
			z = true, -- bindings for folds, spelling and others prefixed with z
			g = true, -- bindings for prefixed with g
		},
	},
	-- add operators that will trigger motion and text object completion
	-- to enable all native operators, set the preset / operators plugin above
	-- operators = { gc = "Comments" },
	key_labels = {
		-- override the label used to display some keys. It doesn't effect WK in any other way.
		-- For example:
		-- ["<space>"] = "SPC",
		-- ["<cr>"] = "RET",
		-- ["<tab>"] = "TAB",
	},
	icons = {
		breadcrumb = "»", -- symbol used in the command line area that shows your active key combo
		separator = "➜", -- symbol used between a key and it's label
		group = "+", -- symbol prepended to a group
	},
	popup_mappings = {
		scroll_down = "<c-d>", -- binding to scroll down inside the popup
		scroll_up = "<c-u>", -- binding to scroll up inside the popup
	},
	window = {
		border = "rounded", -- none, single, double, shadow
		position = "bottom", -- bottom, top
		margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left]
		padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left]
		winblend = 0,
	},
	layout = {
		height = { min = 4, max = 25 }, -- min and max height of the columns
		width = { min = 20, max = 50 }, -- min and max width of the columns
		spacing = 3, -- spacing between columns
		align = "left", -- align columns left, center or right
	},
	ignore_missing = true, -- enable this to hide mappings for which you didn't specify a label
	hidden = { "<silent>", "<cmd>", "<Cmd>", "<CR>", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate
	show_help = true, -- show help message on the command line when the popup is visible
	triggers = "auto", -- automatically setup triggers
	-- triggers = {"<leader>"} -- or specify a list manually
	triggers_blacklist = {
		-- list of mode / prefixes that should never be hooked by WhichKey
		-- this is mostly relevant for key maps that start with a native binding
		-- most people should not need to change this
		i = { "j", "k" },
		v = { "j", "k" },
	},
}

local opts = {
	mode = "n", -- NORMAL mode
	prefix = "<leader>",
	buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
	silent = true, -- use `silent` when creating keymaps
	noremap = true, -- use `noremap` when creating keymaps
	nowait = true, -- use `nowait` when creating keymaps
}

local mappings = {
	["a"] = { "<cmd>Alpha<cr>", "Alpha" },
	["b"] = {
		"<cmd>lua require('telescope.builtin').buffers(require('telescope.themes').get_dropdown{previewer = false})<cr>",
		"Buffers",
	},
	["e"] = { "<cmd>NvimTreeToggle<cr>", "Explorer" },
	["w"] = { "<cmd>w!<CR>", "Save" },
	["W"] = { "<cmd>noa w!<CR>", "Save without formatting" },
	["q"] = { "<cmd>q!<CR>", "Quit" },
	["c"] = { "<cmd>Bdelete!<CR>", "Close Buffer" },
	["h"] = { "<cmd>TroubleToggle<cr>", "Trouble" },
	["f"] = {
		"<cmd>lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown{previewer = false})<cr>",
		"Find files",
	},
	["F"] = { "<cmd>Telescope live_grep theme=ivy<cr>", "Find Text" },
	["P"] = { "<cmd>lua require('telescope').extensions.projects.projects()<cr>", "Projects" },
	["r"] = { "<cmd>Telescope oldfiles<CR>", "Recent Files" },

	p = {
		name = "Packer",
		c = { "<cmd>PackerCompile<cr>", "Compile" },
		i = { "<cmd>PackerInstall<cr>", "Install" },
		s = { "<cmd>PackerSync<cr>", "Sync" },
		S = { "<cmd>PackerStatus<cr>", "Status" },
		u = { "<cmd>PackerUpdate<cr>", "Update" },
	},

	g = {
		name = "Git",
		g = { "<cmd>lua _LAZYGIT_TOGGLE()<CR>", "Lazygit" },
		j = { "<cmd>lua require 'gitsigns'.next_hunk()<cr>", "Next Hunk" },
		k = { "<cmd>lua require 'gitsigns'.prev_hunk()<cr>", "Prev Hunk" },
		l = { "<cmd>lua require 'gitsigns'.blame_line()<cr>", "Blame" },
		p = { "<cmd>lua require 'gitsigns'.preview_hunk()<cr>", "Preview Hunk" },
		r = { "<cmd>lua require 'gitsigns'.reset_hunk()<cr>", "Reset Hunk" },
		R = { "<cmd>lua require 'gitsigns'.reset_buffer()<cr>", "Reset Buffer" },
		s = { "<cmd>lua require 'gitsigns'.stage_hunk()<cr>", "Stage Hunk" },
		u = {
			"<cmd>lua require 'gitsigns'.undo_stage_hunk()<cr>",
			"Undo Stage Hunk",
		},
		o = { "<cmd>Telescope git_status<cr>", "Open changed file" },
		b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
		c = { "<cmd>Telescope git_commits<cr>", "Checkout commit" },
		d = {
			"<cmd>DiffviewOpen<cr>",
			"Diff",
		},
		h = { "<cmd>DiffviewFileHistory<cr>", "File History" },
		C = { "<cmd>DiffviewClose<cr>", "Close diffview" },
	},

	l = {
		name = "LSP",
		a = { "<cmd>lua vim.lsp.buf.code_action()<cr>", "Code Action" },
		d = {
			"<cmd>Telescope diagnostics bufnr=0<cr>",
			"Document Diagnostics",
		},
		w = {
			"<cmd>Telescope diagnostics<cr>",
			"Workspace Diagnostics",
		},
		f = { "<cmd>lua vim.lsp.buf.format{async=true}<cr>", "Format" },
		i = { "<cmd>LspInfo<cr>", "Info" },
		I = { "<cmd>Mason<cr>", "Installer Info" },
		j = {
			"<cmd>lua vim.lsp.diagnostic.goto_next()<CR>",
			"Next Diagnostic",
		},
		k = {
			"<cmd>lua vim.lsp.diagnostic.goto_prev()<cr>",
			"Prev Diagnostic",
		},
		l = { "<cmd>lua vim.lsp.codelens.run()<cr>", "CodeLens Action" },
		q = { "<cmd>lua vim.lsp.diagnostic.set_loclist()<cr>", "Quickfix" },
		r = { "<cmd>lua vim.lsp.buf.rename()<cr>", "Rename" },
		s = { "<cmd>Telescope lsp_document_symbols<cr>", "Document Symbols" },
		S = {
			"<cmd>Telescope lsp_dynamic_workspace_symbols<cr>",
			"Workspace Symbols",
		},
	},

	s = {
		name = "Search",
		b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
		h = { "<cmd>Telescope help_tags<cr>", "Find Help" },
		M = { "<cmd>Telescope man_pages<cr>", "Man Pages" },
		r = { "<cmd>Telescope oldfiles<cr>", "Open Recent File" },
		R = { "<cmd>Telescope registers<cr>", "Registers" },
		k = { "<cmd>Telescope keymaps<cr>", "Keymaps" },
		C = { "<cmd>Telescope commands<cr>", "Commands" },
		s = { "<cmd>lua require('spectre').open()<cr>", "Search and replace" },
	},

	d = {
		name = "Debug",
		b = { "<cmd>lua require'dap'.toggle_breakpoint()<cr>", "Toggle Breakpoint" },
		c = { "<cmd>lua require'dap'.continue()<cr>", "Continue" },
		i = { "<cmd>lua require'dap'.step_into()<cr>", "Step Into" },
		o = { "<cmd>lua require'dap'.step_over()<cr>", "Step Over" },
		O = { "<cmd>lua require'dap'.step_out()<cr>", "Step Out" },
		r = { "<cmd>lua require'dap'.repl.toggle()<cr>", "Toggle Repl" },
		t = { "<cmd>lua require'dap'.terminate()<cr>", "Terminate" },
		u = { "<cmd>lua require'dapui'.toggle()<CR>", "Toggle UI" },
	},

	t = {
		name = "Testing",
		t = { "<cmd>lua require('neotest').run.run()<cr>", "Test Nearest" },
		f = { "<cmd>lua require('neotest').run.run(vim.fn.expand('%'))<cr>", "Test Entire File" },
		s = { "<cmd>lua require('neotest').run.stop()<cr>", "Stop Test Jobs" },
		d = { "<cmd>lua require('neotest').run.run({strategy = 'dap'})<cr>", "Debug Nearest Test" },
		a = { "<cmd>lua require('neotest').run.attach()<cr>", "Attach to Nearest Test" },
		e = { "<cmd>lua require('neotest').summary.toggle()<cr>", "Toggle Summary" },
		o = { "<cmd>lua require('neotest').output.open({ enter = true })<cr>", "Open Test Output" },
	},

	T = {
		name = "Terminal",
		f = { "<cmd>ToggleTerm direction=float<cr>", "Float" },
		h = { "<cmd>ToggleTerm size=10 direction=horizontal<cr>", "Horizontal" },
		v = { "<cmd>ToggleTerm size=80 direction=vertical<cr>", "Vertical" },
	},
}

which_key.setup(setup)
which_key.register(mappings, opts)


================================================
FILE: .config/nvim/plugin/packer_compiled.lua
================================================
-- Automatically generated packer.nvim plugin loader code

if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then
  vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"')
  return
end

vim.api.nvim_command('packadd packer.nvim')

local no_errors, error_msg = pcall(function()

_G._packer = _G._packer or {}
_G._packer.inside_compile = true

local time
local profile_info
local should_profile = false
if should_profile then
  local hrtime = vim.loop.hrtime
  profile_info = {}
  time = function(chunk, start)
    if start then
      profile_info[chunk] = hrtime()
    else
      profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6
    end
  end
else
  time = function(chunk, start) end
end

local function save_profiles(threshold)
  local sorted_times = {}
  for chunk_name, time_taken in pairs(profile_info) do
    sorted_times[#sorted_times + 1] = {chunk_name, time_taken}
  end
  table.sort(sorted_times, function(a, b) return a[2] > b[2] end)
  local results = {}
  for i, elem in ipairs(sorted_times) do
    if not threshold or threshold and elem[2] > threshold then
      results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms'
    end
  end
  if threshold then
    table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)')
  end

  _G._packer.profile_output = results
end

time([[Luarocks path setup]], true)
local package_path_str = "/home/amitgold/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/amitgold/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/amitgold/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/amitgold/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua"
local install_cpath_pattern = "/home/amitgold/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so"
if not string.find(package.path, package_path_str, 1, true) then
  package.path = package.path .. ';' .. package_path_str
end

if not string.find(package.cpath, install_cpath_pattern, 1, true) then
  package.cpath = package.cpath .. ';' .. install_cpath_pattern
end

time([[Luarocks path setup]], false)
time([[try_loadstring definition]], true)
local function try_loadstring(s, component, name)
  local success, result = pcall(loadstring(s), name, _G.packer_plugins[name])
  if not success then
    vim.schedule(function()
      vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {})
    end)
  end
  return result
end

time([[try_loadstring definition]], false)
time([[Defining packer_plugins]], true)
_G.packer_plugins = {
  CamelCaseMotion = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/CamelCaseMotion",
    url = "https://github.com/bkad/CamelCaseMotion"
  },
  ["Comment.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/Comment.nvim",
    url = "https://github.com/numToStr/Comment.nvim"
  },
  ["FixCursorHold.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/FixCursorHold.nvim",
    url = "https://github.com/antoinemadec/FixCursorHold.nvim"
  },
  LuaSnip = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/LuaSnip",
    url = "https://github.com/L3MON4D3/LuaSnip"
  },
  ["alpha-nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/alpha-nvim",
    url = "https://github.com/goolord/alpha-nvim"
  },
  ["bufferline.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/bufferline.nvim",
    url = "https://github.com/akinsho/bufferline.nvim"
  },
  catppuccin = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/catppuccin",
    url = "https://github.com/catppuccin/nvim"
  },
  ["cmp-buffer"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/cmp-buffer",
    url = "https://github.com/hrsh7th/cmp-buffer"
  },
  ["cmp-cmdline"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/cmp-cmdline",
    url = "https://github.com/hrsh7th/cmp-cmdline"
  },
  ["cmp-dap"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/cmp-dap",
    url = "https://github.com/rcarriga/cmp-dap"
  },
  ["cmp-nvim-lsp"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp",
    url = "https://github.com/hrsh7th/cmp-nvim-lsp"
  },
  ["cmp-nvim-lsp-signature-help"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp-signature-help",
    url = "https://github.com/hrsh7th/cmp-nvim-lsp-signature-help"
  },
  ["cmp-nvim-lua"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/cmp-nvim-lua",
    url = "https://github.com/hrsh7th/cmp-nvim-lua"
  },
  ["cmp-path"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/cmp-path",
    url = "https://github.com/hrsh7th/cmp-path"
  },
  ["cmp-tabnine"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/cmp-tabnine",
    url = "https://github.com/tzachar/cmp-tabnine"
  },
  cmp_luasnip = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/cmp_luasnip",
    url = "https://github.com/saadparwaiz1/cmp_luasnip"
  },
  ["cutlass.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/cutlass.nvim",
    url = "https://github.com/gbprod/cutlass.nvim"
  },
  ["diffview.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/diffview.nvim",
    url = "https://github.com/sindrets/diffview.nvim"
  },
  ["friendly-snippets"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/friendly-snippets",
    url = "https://github.com/rafamadriz/friendly-snippets"
  },
  ["gitsigns.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/gitsigns.nvim",
    url = "https://github.com/lewis6991/gitsigns.nvim"
  },
  ["impatient.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/impatient.nvim",
    url = "https://github.com/lewis6991/impatient.nvim"
  },
  ["indent-blankline.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim",
    url = "https://github.com/lukas-reineke/indent-blankline.nvim"
  },
  ["indent-o-matic"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/indent-o-matic",
    url = "https://github.com/Darazaki/indent-o-matic"
  },
  ["live-command.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/live-command.nvim",
    url = "https://github.com/smjonas/live-command.nvim"
  },
  ["lualine.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/lualine.nvim",
    url = "https://github.com/nvim-lualine/lualine.nvim"
  },
  ["mason-lspconfig.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/mason-lspconfig.nvim",
    url = "https://github.com/williamboman/mason-lspconfig.nvim"
  },
  ["mason.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/mason.nvim",
    url = "https://github.com/williamboman/mason.nvim"
  },
  neotest = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/neotest",
    url = "https://github.com/nvim-neotest/neotest"
  },
  ["neotest-jest"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/neotest-jest",
    url = "https://github.com/haydenmeade/neotest-jest"
  },
  ["neotest-python"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/neotest-python",
    url = "https://github.com/nvim-neotest/neotest-python"
  },
  ["neotest-vim-test"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/neotest-vim-test",
    url = "https://github.com/nvim-neotest/neotest-vim-test"
  },
  ["null-ls.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/null-ls.nvim",
    url = "https://github.com/jose-elias-alvarez/null-ls.nvim"
  },
  ["nvim-autopairs"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-autopairs",
    url = "https://github.com/windwp/nvim-autopairs"
  },
  ["nvim-cmp"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-cmp",
    url = "https://github.com/hrsh7th/nvim-cmp"
  },
  ["nvim-colorizer.lua"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua",
    url = "https://github.com/norcalli/nvim-colorizer.lua"
  },
  ["nvim-dap"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-dap",
    url = "https://github.com/mfussenegger/nvim-dap"
  },
  ["nvim-dap-python"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-dap-python",
    url = "https://github.com/mfussenegger/nvim-dap-python"
  },
  ["nvim-dap-ui"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-dap-ui",
    url = "https://github.com/rcarriga/nvim-dap-ui"
  },
  ["nvim-dap-vscode-js"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-dap-vscode-js",
    url = "https://github.com/mxsdev/nvim-dap-vscode-js"
  },
  ["nvim-lspconfig"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-lspconfig",
    url = "https://github.com/neovim/nvim-lspconfig"
  },
  ["nvim-notify"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-notify",
    url = "https://github.com/rcarriga/nvim-notify"
  },
  ["nvim-spectre"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-spectre",
    url = "https://github.com/windwp/nvim-spectre"
  },
  ["nvim-surround"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-surround",
    url = "https://github.com/kylechui/nvim-surround"
  },
  ["nvim-tree.lua"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-tree.lua",
    url = "https://github.com/kyazdani42/nvim-tree.lua"
  },
  ["nvim-treesitter"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-treesitter",
    url = "https://github.com/nvim-treesitter/nvim-treesitter"
  },
  ["nvim-treesitter-context"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-treesitter-context",
    url = "https://github.com/nvim-treesitter/nvim-treesitter-context"
  },
  ["nvim-treesitter-textobjects"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-treesitter-textobjects",
    url = "https://github.com/nvim-treesitter/nvim-treesitter-textobjects"
  },
  ["nvim-treesitter-textsubjects"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-treesitter-textsubjects",
    url = "https://github.com/RRethy/nvim-treesitter-textsubjects"
  },
  ["nvim-ts-autotag"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-ts-autotag",
    url = "https://github.com/windwp/nvim-ts-autotag"
  },
  ["nvim-ts-context-commentstring"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-ts-context-commentstring",
    url = "https://github.com/JoosepAlviste/nvim-ts-context-commentstring"
  },
  ["nvim-ts-rainbow"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-ts-rainbow",
    url = "https://github.com/p00f/nvim-ts-rainbow"
  },
  ["nvim-web-devicons"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/nvim-web-devicons",
    url = "https://github.com/kyazdani42/nvim-web-devicons"
  },
  ["packer.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/packer.nvim",
    url = "https://github.com/wbthomason/packer.nvim"
  },
  ["plenary.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/plenary.nvim",
    url = "https://github.com/nvim-lua/plenary.nvim"
  },
  ["project.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/project.nvim",
    url = "https://github.com/ahmedkhalf/project.nvim"
  },
  ["schemastore.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/schemastore.nvim",
    url = "https://github.com/b0o/schemastore.nvim"
  },
  ["smart-splits.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/smart-splits.nvim",
    url = "https://github.com/mrjones2014/smart-splits.nvim"
  },
  ["substitute.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/substitute.nvim",
    url = "https://github.com/gbprod/substitute.nvim"
  },
  ["telescope-fzf-native.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/telescope-fzf-native.nvim",
    url = "https://github.com/nvim-telescope/telescope-fzf-native.nvim"
  },
  ["telescope.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/telescope.nvim",
    url = "https://github.com/nvim-telescope/telescope.nvim"
  },
  ["toggleterm.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/toggleterm.nvim",
    url = "https://github.com/akinsho/toggleterm.nvim"
  },
  ["trouble.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/trouble.nvim",
    url = "https://github.com/folke/trouble.nvim"
  },
  ["vim-bbye"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/vim-bbye",
    url = "https://github.com/moll/vim-bbye"
  },
  ["vim-be-good"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/vim-be-good",
    url = "https://github.com/ThePrimeagen/vim-be-good"
  },
  ["vim-illuminate"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/vim-illuminate",
    url = "https://github.com/RRethy/vim-illuminate"
  },
  ["vim-indent-object"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/vim-indent-object",
    url = "https://github.com/michaeljsmith/vim-indent-object"
  },
  ["vim-matchup"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/vim-matchup",
    url = "https://github.com/andymass/vim-matchup"
  },
  ["vim-repeat"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/vim-repeat",
    url = "https://github.com/tpope/vim-repeat"
  },
  ["vim-sneak"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/vim-sneak",
    url = "https://github.com/justinmk/vim-sneak"
  },
  ["vim-test"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/vim-test",
    url = "https://github.com/vim-test/vim-test"
  },
  ["vim-textobj-entire"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/vim-textobj-entire",
    url = "https://github.com/kana/vim-textobj-entire"
  },
  ["vim-textobj-user"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/vim-textobj-user",
    url = "https://github.com/kana/vim-textobj-user"
  },
  ["vscode-js-debug"] = {
    loaded = false,
    needs_bufread = false,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/opt/vscode-js-debug",
    url = "https://github.com/microsoft/vscode-js-debug"
  },
  ["which-key.nvim"] = {
    loaded = true,
    path = "/home/amitgold/.local/share/nvim/site/pack/packer/start/which-key.nvim",
    url = "https://github.com/folke/which-key.nvim"
  }
}

time([[Defining packer_plugins]], false)

_G._packer.inside_compile = false
if _G._packer.needs_bufread == true then
  vim.cmd("doautocmd BufRead")
end
_G._packer.needs_bufread = false

if should_profile then save_profiles() end

end)

if not no_errors then
  error_msg = error_msg:gsub('"', '\\"')
  vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None')
end


================================================
FILE: .config/sddm-sugar-candy/theme.conf
================================================
[General]

Background="Backgrounds/kurz.png"
## Path relative to the theme root directory. Most standard image file formats are allowed including support for transparency. (e.g. background.jpeg/illustration.GIF/Foto.png/undraw.svgz)

DimBackgroundImage="0.0"
## Double between 0 and 1 used for the alpha channel of a darkening overlay. Use to darken your background image on the fly.

ScaleImageCropped="true"
## Whether the image should be cropped when scaled proportionally. Setting this to false will fit the whole image instead, possibly leaving white space. This can be exploited beautifully with illustrations (try it with "undraw.svg" included in the theme).

ScreenWidth="1920"
ScreenHeight="1080"
## Adjust to your resolution to help SDDM speed up on calculations



## [Blur Settings]

FullBlur="false"
PartialBlur="false"
## Enable or disable the blur effect; if HaveFormBackground is set to true then PartialBlur will trigger the BackgroundColor of the form element to be partially transparent and blend with the blur.

BlurRadius="80"
## Set the strength of the blur effect. Anything above 100 is pretty strong and might slow down the rendering time. 0 is like setting false for any blur.



## [Design Customizations]

HaveFormBackground="true"
## Have a full opacity background color behind the form that takes slightly more than 1/3 of screen estate;  if PartialBlur is set to true then HaveFormBackground will trigger the BackgroundColor of the form element to be partially transparent and blend with the blur.

FormPosition="left"
## Position of the form which takes roughly 1/3 of screen estate. Can be left, center or right.

BackgroundImageHAlignment="center"
## Horizontal position of the background picture relative to its visible area. Applies when ScaleImageCropped is set to false or when HaveFormBackground is set to true and FormPosition is either left or right. Can be left, center or right; defaults to center if none is passed.

BackgroundImageVAlignment="center"
## As before but for the vertical position of the background picture relative to its visible area.

MainColor="#cdd6f4"
## Used for all elements when not focused/hovered etc. Usually the best effect is achieved by having this be either white or a very dark grey like #444 (not black for smoother antialias)
## Colors can be HEX or Qt names (e.g. red/salmon/blanchedalmond). See https://doc.qt.io/qt-5/qml-color.html

AccentColor="#cba6f7"
## Used for elements in focus/hover/pressed. Should be contrasting to the background and the MainColor to achieve the best effect.

BackgroundColor="#11111B"
## Used for the user and session selection background as well as for ScreenPadding and FormBackground when either is true. If PartialBlur and FormBackground are both enabled this color will blend with the blur effect.

OverrideLoginButtonTextColor=""
## The text of the login button may become difficult to read depending on your color choices. Use this option to set it independently for legibility.

InterfaceShadowSize="6"
## Integer used as multiplier. Size of the shadow behind the user and session selection background. Decrease or increase if it looks bad on your background. Initial render can be slow no values above 5-7.

InterfaceShadowOpacity="0.6"
## Double between 0 and 1. Alpha channel of the shadow behind the user and session selection background. Decrease or increase if it looks bad on your background.

RoundCorners="5"
## Integer in pixels. Radius of the input fields and the login button. Empty for square. Can cause bad antialiasing of the fields.

ScreenPadding="0"
## Integer in pixels. Increase or delete this to have a padding of color BackgroundColor all around your screen. This makes your login greeter appear as if it was a canvas. Cool!

Font="FiraSans"
## If you want to choose a custom font it will have to be available to the X root user. See https://wiki.archlinux.org/index.php/fonts#Manual_installation

FontSize=""
## Only set a fixed value if fonts are way too small for your resolution. Preferrably kept empty.



## [Interface Behavior]

ForceRightToLeft="false"
## Revert the layout either because you would like the login to be on the right hand side or SDDM won't respect your language locale for some reason. This will reverse the current position of FormPosition if it is either left or right and in addition position some smaller elements on the right hand side of the form itself (also when FormPosition is set to center).

ForceLastUser="true"
## Have the last successfully logged in user appear automatically in the username field.

ForcePasswordFocus="true"
## Give automatic focus to the password field. Together with ForceLastUser this makes for the fastest login experience.

ForceHideCompletePassword="false"
## If you don't like to see any character at all not even while being entered set this to true.

ForceHideVirtualKeyboardButton="false"
## Do not show the button for the virtual keyboard at all. This will completely disable functionality for the virtual keyboard even if it is installed and activated in sddm.conf

ForceHideSystemButtons="false"
## Completely disable and hide any power buttons on the greeter.

AllowEmptyPassword="false"
## Enable login for users without a password. This is discouraged. Makes the login button always enabled.

AllowBadUsernames="false"
## Do not change this! Uppercase letters are generally not allowed in usernames. This option is only for systems that differ from this standard! Also shows username as is instead of capitalized.



## [Locale Settings]

Locale=""
## The time and date locale should usually be set in your system settings. Only hard set this if something is not working by default or you want a seperate locale setting in your login screen.

HourFormat="HH:mm"
## Defaults to Locale.ShortFormat - Accepts "long" or a custom string like "hh:mm A". See http://doc.qt.io/qt-5/qml-qtqml-date.html

DateFormat="dddd, d of MMMM"
## Defaults to Locale.LongFormat - Accepts "short" or a custom string like "dddd, d 'of' MMMM". See http://doc.qt.io/qt-5/qml-qtqml-date.html



## [Translations]

HeaderText="Welcome!"
## Header can be empty to not display any greeting at all. Keep it short.

## SDDM may lack proper translation for every element. Suger defaults to SDDM translations. Please help translate SDDM as much as possible for your language: https://github.com/sddm/sddm/wiki/Localization. These are in order as they appear on screen.

TranslatePlaceholderUsername=""
TranslatePlaceholderPassword=""
TranslateShowPassword=""
TranslateLogin=""
TranslateLoginFailedWarning=""
TranslateCapslockWarning=""
TranslateSession=""
TranslateSuspend=""
TranslateHibernate=""
TranslateReboot=""
TranslateShutdown=""
TranslateVirtualKeyboardButton=""
## These don't necessarily need to translate anything. You can enter whatever you want here.


================================================
FILE: .config/spicetify/Extensions/catppuccin-mocha.js
================================================
// Color map
let colorPalette = {
  rosewater: "#f5e0dc",
  flamingo: "#f2cdcd",
  pink: "#f5c2e7",
  maroon: "#eba0ac",
  red: "#f38ba8",
  peach: "#fab387",
  yellow: "#f9e2af",
  green: "#a6e3a1",
  teal: "#94e2d5",
  blue: "#89b4fa",
  sky: "#89dceb",
  lavender: "#b4befe",
  white: "#d9e0ee"
}

// waitForElement borrowed from:
// https://github.com/morpheusthewhite/spicetify-themes/blob/master/Dribbblish/dribbblish.js
function waitForElement(els, func, timeout = 100) {
  const queries = els.map(el => document.querySelector(el));
  if (queries.every(a => a)) {
    func(queries);
  } else if (timeout > 0) {
    setTimeout(waitForElement, 300, els, func, --timeout);
  }
}

// Return the color label for a given hex color value
function getKeyByValue(object, value) {
  return Object.keys(object).find(key => object[key] === value.trim());
}

// Used to select matching equalizer-animated-COLOR.gif
waitForElement([".Root"], (root) => {
  let spiceEq = getComputedStyle(document.querySelector(":root")).getPropertyValue("--spice-equalizer");
  let eqColor = getKeyByValue(colorPalette, spiceEq);
  root[0].classList.add(`catppuccin-eq-${eqColor}`);
});


================================================
FILE: .config/spicetify/Themes/catppuccin-mocha/assets/.gitkeep
================================================


================================================
FILE: .config/spicetify/Themes/catppuccin-mocha/color.ini
================================================
[rosewater]
text               = F5E0DC
subtext            = CDD6F4
accent             = FAE3B0
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 414559
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6C7086
tab-active         = 313244
notification       = 313244
notification-error = F38BA8
equalizer          = F5E0DC
misc               = 585B70

[flamingo]
text               = F2CDCD
subtext            = CDD6F4
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 313244
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6E6C7E
tab-active         = 313244
notification       = 313244
notification-error = F28FAD
equalizer          = F2CDCD
misc               = 585B70

[mauve]
text               = CBA6F7
subtext            = CDD6F4
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 313244
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6E6C7E
tab-active         = 313244
notification       = 313244
notification-error = F28FAD
equalizer          = CBA6F7
misc               = 585B70

[pink]
text               = F5C2E7
subtext            = CDD6F4
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 313244
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6E6C7E
tab-active         = 313244
notification       = 313244
notification-error = F28FAD
equalizer          = F5C2E7
misc               = 585B70

[maroon]
text               = EBA0AC
subtext            = CDD6F4
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 313244
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6E6C7E
tab-active         = 313244
notification       = 313244
notification-error = F28FAD
equalizer          = EBA0AC
misc               = 585B70

[red]
text               = F38BA8
subtext            = CDD6F4
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 313244
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6E6C7E
tab-active         = 313244
notification       = 313244
notification-error = F28FAD
equalizer          = F38BA8
misc               = 585B70

[peach]
text               = FAB387
subtext            = CDD6F4
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 313244
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6E6C7E
tab-active         = 313244
notification       = 313244
notification-error = F28FAD
equalizer          = FAB387
misc               = 585B70

[yellow]
text               = F9E2AF
subtext            = CDD6F4
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 313244
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6E6C7E
tab-active         = 313244
notification       = 313244
notification-error = F28FAD
equalizer          = F9E2AF
misc               = 585B70

[green]
text               = A6E3A1
subtext            = CDD6F4
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 313244
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6E6C7E
tab-active         = 313244
notification       = 313244
notification-error = F28FAD
equalizer          = A6E3A1
misc               = 585B70

[teal]
text               = 94E2D5
subtext            = CDD6F4
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 313244
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6E6C7E
tab-active         = 313244
notification       = 313244
notification-error = F28FAD
equalizer          = 94E2D5
misc               = 585B70

[blue]
text               = 89B4FA
subtext            = CDD6F4
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 313244
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6E6C7E
tab-active         = 313244
notification       = 313244
notification-error = F28FAD
equalizer          = 89B4FA
misc               = 585B70

[sky]
text               = 89DCEB
subtext            = CDD6F4
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 313244
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6E6C7E
tab-active         = 313244
notification       = 313244
notification-error = F28FAD
equalizer          = 89DCEB
misc               = 585B70

[lavender]
text               = B4BEFE
subtext            = BAC2DE
main               = 1E1E2E
sidebar            = 181825
player             = 11111B
card               = 313244
shadow             = 181825
selected-row       = 585B70
button             = 7F849C
button-active      = 9399B2
button-disabled    = 6E6C7E
tab-active         = 313244
notification       = 313244
notification-error = F28FAD
equalizer          = B4BEFE
misc               = 585B70


================================================
FILE: .config/spicetify/Themes/catppuccin-mocha/user.css
================================================
/* Color Pallette */
/* Note: These variables should be used ONLY when needed across ALL of the color palettes. */
:root {
  /* Morning */
  --flamingo: #f2cdcd;
  --mauve: #cba6f7;
  --pink: #f5c2e7;
  --maroon: #eba0ac;
  --red: #f38ba8;
  --peach: #fab387;
  --yellow: #f9e2af;
  --green: #a6e3a1;
  --teal: #94e2d5;
  --blue: #89b4fa;
  --sky: #89dceb;
  /* Night */
  /* --black-0: #161320; */
  --crust: #11111B;
  /* --black-1: #1A1826; */
  --mantle: #181825;
  /* --black-2: #1E1E2E;  */
  --base: #1E1E2E;
  /* --black-3: #302D41; */
  --surface0: #313244;
  /* --black-4: #575268;  */
  --surface1: #45475A; 
  /* --gray-0: #6E6C7E;  */
  --overlay0: #6C7086;
  /* --gray-1: #988BA2; */
  ---overlay1: #7f849C;
  /* --gray-2: #C3BAC6; */
  --overlay2: #9399B2;
  /* --white: #D9E0EE; */
  --white: #d9e0ee;
  --lavender: #b4befe;
  --rosewater: #f5e0dc;
}

/* Buttons */
.main-playButton-PlayButton.main-playButton-primary {
    color: var(--spice-player);
}

.main-button-primary {
    background-color: var(--spice-main);
}
.main-button-primary:active,
.main-button-primary:focus,
.main-button-primary:hover {
    background-color: var(--spice-sidebar);
}

.main-view-container button:hover > div[class^='ButtonInner-sc-'] {
    background-color: var(--spice-button);
}

.control-button-heart[aria-checked="true"],
.main-addButton-active,
.main-addButton-active:focus,
.main-addButton-active:hover {
    color: var(--red);
}

.main-addButton-active:hover {
    -webkit-transform: scale(1.06);
    transform: scale(1.06);
}

/* Progress bar */
.x-progressBar-progressBarBg > div > div {
    background-color: var(--spice-text);
}

/* Top bars */
.main-entityHeader-backgroundColor,
.main-actionBarBackground-background,
.main-view-container main[aria-label="Spotify – Web Player"] > div:first-child {
    display: none;
}

.main-topBar-background {
    background-color: var(--spice-main) !important;
}

.main-entityHeader-withBackgroundImage {
    background-color: rgba(var(--spice-rgb-player), 0.2);
}

/* Sidebar */
.main-navBar-navBar li:hover > div,
.main-navBar-navBar li:hover > a:not(.main-navBar-navBarLinkActive),
.spicetify-playlist-list li:hover {
    background-color: var(--spice-main);
}

#spicetify-sticky-list li:hover > div {
    border-radius: 4px;
}

/* Scrollbar */
.os-theme-spotify > .os-scrollbar-horizontal,
.os-theme-spotify > .os-scrollbar-vertical {
    padding: 4px;
}

.os-theme-spotify.os-host-transition
    > .os-scrollbar-horizontal
    > .os-scrollbar-track
    > .os-scrollbar-handle,
.os-theme-spotify.os-host-transition
    > .os-scrollbar-vertical
    > .os-scrollbar-track
    > .os-scrollbar-handle {
    background-color: var(--decorative-base);
    border-radius: 6px;
}

::-webkit-scrollbar {
    width: 0.5em;
}
::-webkit-scrollbar-thumb {
    background-color: #575268;
    border-radius: 4px;
}

/* Home */
.main-home-homeHeader {
    display: none;
}

.main-home-content
    > section:first-child
    > .main-gridContainer-gridContainer
    > div {
    background-color: var(--spice-card);
}
.main-home-content
    > section:first-child
    > .main-gridContainer-gridContainer
    > div:hover {
    background-color: var(--spice-misc);
}

.main-gridContainer-gridContainer > div,
.main-gridContainer-gridContainer > div > div > div {
    border-radius: 6px;
}

/* Cards */
.main-card-card {
    border-radius: 6px;
}

.main-card-imageContainer {
    margin: -16px -16px 16px -16px;
}

.main-cardImage-imageWrapper,
.main-cardImage-image {
    border-radius: 6px 6px 0 0;
}

/* Settings */
input:checked~.x-toggle-indicatorWrapper {
  background-color: var(---overlay1);
}

input:hover:not([disabled]):not(:active)~.x-toggle-indicatorWrapper {
  background-color: var(--spice-button-active);
}

select option:checked {
  color: var(--spice-text);
  font-weight: bold;
}

/* Animated equalizer */
/* EQ color classes are specified here in case the js extension is not moved over
 * The default green eq will be used in this case */
.catppuccin-eq-rosewater .main-trackList-playingIcon,
.catppuccin-eq-flamingo .main-trackList-playingIcon,
.catppuccin-eq-mauve .main-trackList-playingIcon,
.catppuccin-eq-pink .main-trackList-playingIcon,
.catppuccin-eq-maroon .main-trackList-playingIcon,
.catppuccin-eq-red .main-trackList-playingIcon,
.catppuccin-eq-peach .main-trackList-playingIcon,
.catppuccin-eq-yellow .main-trackList-playingIcon,
.catppuccin-eq-green .main-trackList-playingIcon,
.catppuccin-eq-teal .main-trackList-playingIcon,
.catppuccin-eq-blue .main-trackList-playingIcon,
.catppuccin-eq-sky .main-trackList-playingIcon,
.catppuccin-eq-lavender .main-trackList-playingIcon,
.catppuccin-eq-white .main-trackList-playingIcon {
    background-size: cover;
    padding-left: 100%;
}

.catppuccin-eq-rosewater .main-trackList-playingIcon {
    background-image: url("equalizer-animated-rosewater.gif");
}
.catppuccin-eq-flamingo .main-trackList-playingIcon {
    background-image: url("equalizer-animated-flamingo.gif");
}
.catppuccin-eq-mauve .main-trackList-playingIcon {
    background-image: url("equalizer-animated-mauve.gif");
}
.catppuccin-eq-pink .main-trackList-playingIcon {
    background-image: url("equalizer-animated-pink.gif");
}
.catppuccin-eq-maroon .main-trackList-playingIcon {
    background-image: url("equalizer-animated-maroon.gif");
}
.catppuccin-eq-red .main-trackList-playingIcon {
    background-image: url("equalizer-animated-red.gif");
}
.catppuccin-eq-peach .main-trackList-playingIcon {
    background-image: url("equalizer-animated-peach.gif");
}
.catppuccin-eq-yellow .main-trackList-playingIcon {
    background-image: url("equalizer-animated-yellow.gif");
}
.catppuccin-eq-green .main-trackList-playingIcon {
    background-image: url("equalizer-animated-green.gif");
}
.catppuccin-eq-teal .main-trackList-playingIcon {
    background-image: url("equalizer-animated-teal.gif");
}
.catppuccin-eq-blue .main-trackList-playingIcon {
    background-image: url("equalizer-animated-blue.gif");
}
.catppuccin-eq-sky .main-trackList-playingIcon {
    background-image: url("equalizer-animated-sky.gif");
}
.catppuccin-eq-lavender .main-trackList-playingIcon {
    background-image: url("equalizer-animated-lavender.gif");
}
.catppuccin-eq-lavender .main-trackList-playingIcon {
    background-image: url("equalizer-animated-white.gif");
}

/* For that small dot on podcasts that notify us of new episodes */
.main-home-content
    > section:first-child
    > .main-gridContainer-gridContainer
    > div
    span[aria-label],
span[aria-label="New episode"],
span[aria-label="New Podcast Episode"] {
    background: var(--spice-accent, var(--spice-text));
}

/* Modals */
.GenericModal[aria-label="Already added"] > div {
    background-color: var(--spice-card);
    color: var(--spice-subtext);
}

.GenericModal[aria-label="Already added"] button:first-child {
    color: var(--spice-button-active);
}

.GenericModal[aria-label="Already added"] button:first-child:hover {
    color: var(--spice-notification-error);
}

.GenericModal[aria-label="Already added"] button:last-child:hover > div {
    background-color: var(--spice-button);
}




================================================
FILE: .config/waybar/config.jsonc
================================================
{
    "layer": "top",
    "position": "top",
    "height": 0,
    "modules-left": ["clock", "wlr/workspaces"],
    "modules-center": ["hyprland/window"],
    "modules-right": [
        "tray",
        "custom/caffeine",
        "custom/updates",
        "custom/language",
        "network",
        "backlight",
        "pulseaudio",
        "battery"
    ],

    "hyprland/window": {
        "format": "{}"
    },
    "wlr/workspaces": {
        "disable-scroll": true,
        "all-outputs": true,
        "on-click": "activate",
        //"format": "{icon}",
        "persistent_workspaces": {
            "1": [],
            "2": [],
            "3": [],
            "4": [],
            "5": [],
            "6": [],
            "7": [],
            "8": [],
            "9": [],
            "10": []
        }
    },
    "custom/caffeine": {
        "exec": "~/.config/waybar/scripts/caffeine.sh",
        "return-type": "json",
        "interval": 3,
        "format-icons": ["﯈", ""],
        "format": "{icon}"
    },
    "custom/updates": {
        "exec": "(checkupdates ; paru -Qua) | wc -l",
        "interval": 7200,
        "format": " {}"
    },
    "custom/language": {
        "exec": "cat /tmp/kb_layout",
        "interval": 3,
        "format": " {}"
    },
    "tray": {
        "icon-size": 13,
        "spacing": 10
    },
    "backlight": {
        "device": "intel_backlight",
        "format": "{icon} {percent}%",
        "format-icons": ["", "", ""],
        "on-scroll-up": "brightnessctl set 1%+",
        "on-scroll-down": "brightnessctl set 1%-",
        "min-length": 6
    },
    "battery": {
        "states": {
            "good": 95,
            "warning": 30,
            "critical": 20
        },
        "format": "{icon} {capacity}%",
        "format-charging": " {capacity}%",
        "format-plugged": " {capacity}%",
        "format-alt": "{time} {icon}",
        "format-icons": ["", "", "", "", "", "", "", "", "", "", ""]
    },
    "clock": {
        "format": "{: %R   %d/%m}",
        "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
    },
    "network": {
        "format-wifi": "直 {essid}",
        "format-ethernet": " {essid}",
        "format-linked": "{ifname} (No IP) ",
        "format-disconnected": "睊 Disconnected",
        "tooltip-format-wifi": "Signal Strenght: {signalStrength}% | Down Speed: {bandwidthDownBits}, Up Speed: {bandwidthUpBits}",
        "on-click": "wofi-wifi-menu"
    },
    "pulseaudio": {
        "format": "{icon} {volume}%",
        "format-muted": "ﱝ Muted",
        "on-click": "/home/amitgold/.config/hypr/scripts/volume_ctl.sh mute",
        "scroll-step": 1,
        "format-icons": {
            "headphone": "",
            "hands-free": "",
            "headset": "",
            "phone": "",
            "portable": "",
            "car": "",
            "default": ["", "", "墳", ""]
        }
    }
}


================================================
FILE: .config/waybar/scripts/caffeine.sh
================================================
#!/bin/sh

if pgrep -x sleep.sh > /dev/null; then
  echo '{ "percentage": 0 }'
else
  echo '{ "percentage": 100 }'
fi


================================================
FILE: .config/waybar/style.css
================================================
* {
    border: none;
    border-radius: 0;
    font-family: monospace;
    font-weight: bold;
    font-size: 14px;
    min-height: 0;
}

window#waybar {
    background: rgba(21, 18, 27, 0);
    color: #cdd6f4;
}

tooltip {
    background: #1e1e2e;
    border-radius: 10px;
    border-width: 2px;
    border-style: solid;
    border-color: #11111b;
}

#workspaces button {
    padding: 5px;
    color: #313244;
    margin-right: 5px;
}

#workspaces button.active {
    color: #a6adc8;
}

#workspaces button.focused {
    color: #a6adc8;
    background: #eba0ac;
    border-radius: 10px;
}

#workspaces button.urgent {
    color: #11111b;
    background: #a6e3a1;
    border-radius: 10px;
}

#workspaces button:hover {
    background: #11111b;
    color: #cdd6f4;
    border-radius: 10px;
}

#custom-language,
#custom-updates,
#custom-caffeine,
#window,
#clock,
#battery,
#pulseaudio,
#network,
#workspaces,
#tray,
#backlight {
    background: #1e1e2e;
    padding: 0px 10px;
    margin: 3px 0px;
    margin-top: 10px;
    border: 1px solid #181825;
}

#tray {
    border-radius: 10px;
    margin-right: 10px;
}

#workspaces {
    background: #1e1e2e;
    border-radius: 10px;
    margin-left: 10px;
    padding-right: 0px;
    padding-left: 5px;
}

#custom-caffeine {
    color: #89dceb;
    border-radius: 10px 0px 0px 10px;
    border-right: 0px;
    margin-left: 10px;
}

#custom-language {
    color: #f38ba8;
    border-left: 0px;
    border-right: 0px;
}

#custom-updates {
    color: #f5c2e7;
    border-left: 0px;
    border-right: 0px;
}

#window {
    border-radius: 10px;
    margin-left: 60px;
    margin-right: 60px;
}

#clock {
    color: #f9e2af;
    border-radius: 10px;
    margin-left: 10px;
}

#network {
    color: #fab387;
    border-left: 0px;
    border-right: 0px;
}

#pulseaudio {
    color: #89b4fa;
    border-left: 0px;
    border-right: 0px;
}

#battery {
    color: #a6e3a1;
    border-radius: 0 10px 10px 0;
    margin-right: 10px;
    border-left: 0px;
}

#backlight {
    color: #cba6f7;
    border-left: 0px;
    border-right: 0px;
}


================================================
FILE: .config/wlogout/layout
================================================
{
    "label" : "lock",
    "action" : "~/.config/hypr/scripts/lock.sh",
    "text" : "Lock",
    "keybind" : "l"
}
{
    "label" : "reboot",
    "action" : "systemctl reboot",
    "text" : "Reboot",
    "keybind" : "r"
}
{
    "label" : "shutdown",
    "action" : "systemctl poweroff",
    "text" : "Shutdown",
    "keybind" : "s"
}
{
    "label" : "logout",
    "action" : "hyprctl dispatch exit 0",
    "text" : "Logout",
    "keybind" : "e"
}
{
    "label" : "suspend",
    "action" : "systemctl suspend",
    "text" : "Suspend",
    "keybind" : "u"
}


================================================
FILE: .config/wlogout/style.css
================================================
window {
    font-family: monospace;
    font-size: 14pt;
    color: #cdd6f4; /* text */
    background-color: rgba(30, 30, 46, 0.5);
}

button {
    background-repeat: no-repeat;
    background-position: center;
    background-size: 25%;
    border: none;
    background-color: rgba(30, 30, 46, 0);
    margin: 5px;
    transition: box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out;
}

button:hover {
    background-color: rgba(49, 50, 68, 0.1);
}

button:focus {
    background-color: #cba6f7;
    color: #1e1e2e;
}

#lock {
    background-image: image(url("./lock.png"));
}
#lock:focus {
    background-image: image(url("./lock-hover.png"));
}

#logout {
    background-image: image(url("./logout.png"));
}
#logout:focus {
    background-image: image(url("./logout-hover.png"));
}

#suspend {
    background-image: image(url("./sleep.png"));
}
#suspend:focus {
    background-image: image(url("./sleep-hover.png"));
}

#shutdown {
    background-image: image(url("./power.png"));
}
#shutdown:focus {
    background-image: image(url("./power-hover.png"));
}

#reboot {
    background-image: image(url("./restart.png"));
}
#reboot:focus {
    background-image: image(url("./restart-hover.png"));
}


================================================
FILE: .config/wofi/config
================================================
width=800
height=400
location=center
show=drun
prompt=Search...
filter_rate=100
allow_markup=true
no_actions=true
halign=fill
orientation=vertical
content_halign=fill
insensitive=true
allow_images=true
image_size=28
gtk_dark=true


================================================
FILE: .config/wofi/style.css
================================================
@define-color clear rgba(0, 0, 0, 0.0);
@define-color primary rgba(0, 0, 0, 0.75);

window {
    margin: 2px;
    border: 2px solid;
    border-color: #313244;
    background-color: #1e1e2e;
    border-radius: 10px;
    font-family: monospace;
    font-size: 14px;
}

#input {
    padding: 2px;
    margin: 4px;
    margin-bottom: 8px;
    border: none;
    color: @foreground;
    background-color: #313244;
   	outline: none;
}

#inner-box {
    margin: 2px;
    border: 0px solid;
    background-color: @clear;
    border-radius: 8px;
}

#outer-box {
    margin: 5px;
    border: none;
    border-radius: 8px;
    background-color: @clear;
}

#scroll {
    margin: 0px;
    border: none;
}

#text:selected {
    color: @foreground;
    margin: 0px 0px;
    border: none;
    border-radius: 8px;
}

#entry {
    margin: 0px 0px;
    border: none;
    border-radius: 0px;
    background-color: transparent;
}

#entry:selected {
    margin: 0px 0px;
    border: none;
    border-radius: 8px;
    background-color: #585b70;
}


================================================
FILE: .config/wofi/wifi
================================================
# Config for wofi-wifi-menu

# position values:
# 1 2 3
# 8 0 4
# 7 6 5
POSITION=3

#y-offset
YOFF=10

#x-offset
XOFF=-65

#fields to be displayed
FIELDS=SSID,IN-USE,BARS,SECURITY


================================================
FILE: .config/xfce4/helpers.rc
================================================
TerminalEmulator=kitty
TerminalEmulatorDismissed=true


================================================
FILE: .config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>

<channel name="thunar" version="1.0">
  <property name="last-view" type="string" value="ThunarDetailsView"/>
  <property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_100_PERCENT"/>
  <property name="last-window-maximized" type="bool" value="true"/>
  <property name="last-separator-position" type="int" value="170"/>
  <property name="misc-single-click" type="bool" value="false"/>
  <property name="last-show-hidden" type="bool" value="false"/>
  <property name="misc-open-new-window-as-tab" type="bool" value="false"/>
  <property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_38_PERCENT"/>
  <property name="last-details-view-column-widths" type="string" value="126,124,72,114,1209,76,112,70,112,62"/>
  <property name="last-sort-column" type="string" value="THUNAR_COLUMN_DATE_MODIFIED"/>
  <property name="last-sort-order" type="string" value="GTK_SORT_DESCENDING"/>
  <property name="misc-middle-click-in-tab" type="bool" value="true"/>
  <property name="last-details-view-visible-columns" type="string" value="THUNAR_COLUMN_DATE_ACCESSED,THUNAR_COLUMN_DATE_MODIFIED,THUNAR_COLUMN_NAME,THUNAR_COLUMN_PERMISSIONS,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE"/>
  <property name="misc-confirm-close-multiple-tabs" type="bool" value="false"/>
</channel>


================================================
FILE: .config/zsh/catppuccin-tty.sh
================================================
#!/usr/bin/env bash

if [ "$TERM" = "linux" ]; then
	printf %b '\e]P011111B' # set background color to "Base"
	printf %b '\e]P8585B70' # set bright black to "Surface2"

	printf %b '\e]P7BAC2DE' # set text color to "Text"
	printf %b '\e]PFA6ADC8' # set bright white to "Subtext0"

	printf %b '\e]P1F38BA8' # set red to "Red"
	printf %b '\e]P9F38BA8' # set bright red to "Red"

	printf %b '\e]P2A6E3A1' # set green to "Green"
	printf %b '\e]PAA6E3A1' # set bright green to "Green"

	printf %b '\e]P3F9E2AF' # set yellow to "Yellow"
	printf %b '\e]PBF9E2AF' # set bright yellow to "Yellow"

	printf %b '\e]P489B4FA' # set blue to "Blue"
	printf %b '\e]PC89B4FA' # set bright blue to "Blue"

	printf %b '\e]P5F5C2E7' # set magenta to "Pink"
	printf %b '\e]PDF5C2E7' # set bright magenta to "Pink"

	printf %b '\e]P694E2D5' # set cyan to "Teal"
	printf %b '\e]PE94E2D5' # set bright cyan to "Teal"

	clear
fi


================================================
FILE: .gitconfig
================================================
[user]
	email = amit.wifi@gmail.com
	name = Amit Goldenberg


================================================
FILE: .gtkrc-2.0
================================================
# DO NOT EDIT! This file will be overwritten by LXAppearance.
# Any customization should be done in ~/.gtkrc-2.0.mine instead.

include "/home/amitgold/.gtkrc-2.0.mine"
gtk-theme-name="Catppuccin-Mocha-Mauve"
gtk-icon-theme-name="Papirus-Dark"
gtk-font-name="Cantarell 11"
gtk-cursor-theme-name="Catppuccin-Cursor"
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintfull"


================================================
FILE: .icons/Catppuccin-Cursor/index.theme
================================================
[Icon Theme]
Name="Simp1e-Catppuccin"


================================================
FILE: .icons/default/index.theme
================================================
# This file is written by LXAppearance. Do not edit.
[Icon Theme]
Name=Default
Comment=Default Cursor Theme
Inherits=Catppuccin-Cursor


================================================
FILE: .lessfilter
================================================
#! /usr/bin/env sh
# this is a example of .lessfilter, you can change it
mime=$(file -bL --mime-type "$1")
category=${mime%%/*}
kind=${mime##*/}

if [ -d "$1" ]; then
	exa --git -hl --color=always --icons "$1"
# elif [ "$category" = image ]; then
  # kitty +kitten icat --place 30x30@0x0 --silent --transfer-mode file "$1"
# elif [ "$kind" = vnd.openxmlformats-officedocument.spreadsheetml.sheet ] || \
# 	[ "$kind" = vnd.ms-excel ]; then
# 	in2csv "$1" | xsv table | bat -ltsv --color=always
elif [ "$category" = text ]; then
	bat --color=always "$1"
else
	# lesspipe.sh "$1" | bat --color=always
  echo "Can't preview file"
fi
# lesspipe.sh don't use exa, bat and chafa, it use ls and exiftool. so we create a lessfilter.


================================================
FILE: .local/bin/nvim_kitty
================================================
#!/bin/env sh

if [[ $TERM == 'xterm-kitty' ]]; then
	kitty @ set-spacing padding=0
	nvim "$@"
	kitty @ set-spacing padding=default
else
	nvim "$@"
fi


================================================
FILE: .local/bin/spotify-adblock
================================================
#!/bin/sh

LD_PRELOAD=/usr/lib/spotify-adblock.so spotify


================================================
FILE: .local/bin/wrappedhl
================================================
#!/bin/sh

cd ~

export _JAVA_AWT_WM_NONREPARENTING=1
export XCURSOR_SIZE=24

export LIBVA_DRIVER_NAME=nvidia
export XDG_SESSION_TYPE=wayland
export GBM_BACKEND=nvidia-drm
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export WLR_NO_HARDWARE_CURSORS=1

exec Hyprland


================================================
FILE: .local/share/applications/discord.desktop
================================================
[Desktop Entry]
Name=Discord
StartupWMClass=discord
Comment=All-in-one voice and text chat for gamers that's free, secure, and works on both your desktop and phone.
GenericName=Internet Messenger
Exec=/usr/bin/discocss
Icon=discord
Type=Application
Categories=Network;InstantMessaging;
Path=/usr/bin
Path=/usr/bin


================================================
FILE: .local/share/applications/nvim.desktop
================================================
[Desktop Entry]
Name=Neovim
GenericName=Text Editor
GenericName[de]=Texteditor
GenericName[fr]=Éditeur de texte
GenericName[ru]=Текстовый редактор
GenericName[sr]=Едитор текст
GenericName[tr]=Metin Düzenleyici
Comment=Edit text files
Comment[af]=Redigeer tekslêers
Comment[am]=የጽሑፍ ፋይሎች ያስተካክሉ
Comment[ar]=حرّر ملفات نصية
Comment[az]=Mətn fayllarını redaktə edin
Comment[be]=Рэдагаваньне тэкставых файлаў
Comment[bg]=Редактиране на текстови файлове
Comment[bn]=টেক্স্ট ফাইল এডিট করুন
Comment[bs]=Izmijeni tekstualne datoteke
Comment[ca]=Edita fitxers de text
Comment[cs]=Úprava textových souborů
Comment[cy]=Golygu ffeiliau testun
Comment[da]=Redigér tekstfiler
Comment[de]=Textdateien bearbeiten
Comment[el]=Επεξεργασία αρχείων κειμένου
Comment[en_CA]=Edit text files
Comment[en_GB]=Edit text files
Comment[es]=Edita archivos de texto
Comment[et]=Redigeeri tekstifaile
Comment[eu]=Editatu testu-fitxategiak
Comment[fa]=ویرایش پرونده‌های متنی
Comment[fi]=Muokkaa tekstitiedostoja
Comment[fr]=Éditer des fichiers texte
Comment[ga]=Eagar comhad Téacs
Comment[gu]=લખાણ ફાઇલોમાં ફેરફાર કરો
Comment[he]=ערוך קבצי טקסט
Comment[hi]=पाठ फ़ाइलें संपादित करें
Comment[hr]=Uređivanje tekstualne datoteke
Comment[hu]=Szövegfájlok szerkesztése
Comment[id]=Edit file teks
Comment[it]=Modifica file di testo
Comment[ja]=テキストファイルを編集します
Comment[kn]=ಪಠ್ಯ ಕಡತಗಳನ್ನು ಸಂಪಾದಿಸು
Comment[ko]=텍스트 파일을 편집합니다
Comment[lt]=Redaguoti tekstines bylas
Comment[lv]=Rediģēt teksta failus
Comment[mk]=Уреди текстуални фајлови
Comment[ml]=വാചക രചനകള് തിരുത്തുക
Comment[mn]=Текст файл боловсруулах
Comment[mr]=गद्य फाइल संपादित करा
Comment[ms]=Edit fail teks
Comment[nb]=Rediger tekstfiler
Comment[ne]=पाठ फाइललाई संशोधन गर्नुहोस्
Comment[nl]=Tekstbestanden bewerken
Comment[nn]=Rediger tekstfiler
Comment[no]=Rediger tekstfiler
Comment[or]=ପାଠ୍ଯ ଫାଇଲଗୁଡ଼ିକୁ ସମ୍ପାଦନ କରନ୍ତୁ
Comment[pa]=ਪਾਠ ਫਾਇਲਾਂ ਸੰਪਾਦਨ
Comment[pl]=Edytor plików tekstowych
Comment[pt]=Editar ficheiros de texto
Comment[pt_BR]=Edite arquivos de texto
Comment[ro]=Editare fişiere text
Comment[ru]=Редактирование текстовых файлов
Comment[sk]=Úprava textových súborov
Comment[sl]=Urejanje datotek z besedili
Comment[sq]=Përpuno files teksti
Comment[sr]=Уређујте текст фајлове
Comment[sr@Latn]=Izmeni tekstualne datoteke
Comment[sv]=Redigera textfiler
Comment[ta]=உரை கோப்புகளை தொகுக்கவும்
Comment[th]=แก้ไขแฟ้มข้อความ
Comment[tk]=Metin faýllary editle
Comment[tr]=Metin dosyaları düzenleyin
Comment[uk]=Редактор текстових файлів
Comment[vi]=Soạn thảo tập tin văn bản
Comment[wa]=Asspougnî des fitchîs tecses
Comment[zh_CN]=编辑文本文件
Comment[zh_TW]=編輯文字檔
TryExec=nvim
Exec=kitty sh -c "nvim %F"
Terminal=false
Type=Application
Keywords=Text;editor;
Keywords[fr]=Texte;éditeur;
Keywords[ru]=текст;текстовый редактор;
Keywords[sr]=Текст;едитор;
Keywords[tr]=Metin;düzenleyici;
Icon=nvim
Categories=Utility;TextEditor;
StartupNotify=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;


================================================
FILE: .local/share/applications/spotify.desktop
================================================
[Desktop Entry]
Type=Application
Name=Spotify
GenericName=Music Player
Icon=spotify-client
TryExec=spotify
Exec=env LD_PRELOAD=/usr/lib/spotify-adblock.so spotify %U
Terminal=false
MimeType=x-scheme-handler/spotify;
Categories=Audio;Music;Player;AudioVideo;
StartupWMClass=spotify


================================================
FILE: .p10k-tty.zsh
================================================
# Generated by Powerlevel10k configuration wizard on 2022-08-22 at 14:16 IDT.
# Based on romkatv/powerlevel10k/config/p10k-lean-8colors.zsh, checksum 16080.
# Wizard options: ascii, lean_8colors, 24h time, 2 lines, dotted, white-ornaments,
# compact, concise, transient_prompt, instant_prompt=verbose.
# Type `p10k configure` to generate another config.
#
# Config for Powerlevel10k with 8-color lean prompt style. Type `p10k configure` to generate
# your own config based on it.
#
# Tip: Looking for a nice color? Here's a one-liner to print colormap.
#
#   for i in {0..255}; do print -Pn "%K{$i}  %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done

# Temporarily change options.
'builtin' 'local' '-a' 'p10k_config_opts'
[[ ! -o 'aliases'         ]] || p10k_config_opts+=('aliases')
[[ ! -o 'sh_glob'         ]] || p10k_config_opts+=('sh_glob')
[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'

() {
  emulate -L zsh -o extended_glob

  # Unset all configuration options. This allows you to apply configuration changes without
  # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
  unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'

  # Zsh >= 5.1 is required.
  autoload -Uz is-at-least && is-at-least 5.1 || return

  # The list of segments shown on the left. Fill it with the most important segments.
  typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
    # =========================[ Line #1 ]=========================
    # os_icon               # os identifier
    dir                     # current directory
    vcs                     # git status
    # =========================[ Line #2 ]=========================
    newline                 # \n
    prompt_char             # prompt symbol
  )

  # The list of segments shown on the right. Fill it with less important segments.
  # Right prompt on the last prompt line (where you are typing your commands) gets
  # automatically hidden when the input line reaches it. Right prompt above the
  # last prompt line gets hidden if it would overlap with left prompt.
  typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
    # =========================[ Line #1 ]=========================
    status                  # exit code of the last command
    command_execution_time  # duration of the last command
    background_jobs         # presence of background jobs
    direnv                  # direnv status (https://direnv.net/)
    asdf                    # asdf version manager (https://github.com/asdf-vm/asdf)
    virtualenv              # python virtual environment (https://docs.python.org/3/library/venv.html)
    anaconda                # conda environment (https://conda.io/)
    pyenv                   # python environment (https://github.com/pyenv/pyenv)
    goenv                   # go environment (https://github.com/syndbg/goenv)
    nodenv                  # node.js version from nodenv (https://github.com/nodenv/nodenv)
    nvm                     # node.js version from nvm (https://github.com/nvm-sh/nvm)
    nodeenv                 # node.js environment (https://github.com/ekalinin/nodeenv)
    # node_version          # node.js version
    # go_version            # go version (https://golang.org)
    # rust_version          # rustc version (https://www.rust-lang.org)
    # dotnet_version        # .NET version (https://dotnet.microsoft.com)
    # php_version           # php version (https://www.php.net/)
    # laravel_version       # laravel php framework version (https://laravel.com/)
    # java_version          # java version (https://www.java.com/)
    # package               # name@version from package.json (https://docs.npmjs.com/files/package.json)
    rbenv                   # ruby version from rbenv (https://github.com/rbenv/rbenv)
    rvm                     # ruby version from rvm (https://rvm.io)
    fvm                     # flutter version management (https://github.com/leoafarias/fvm)
    luaenv                  # lua version from luaenv (https://github.com/cehoffman/luaenv)
    jenv                    # java version from jenv (https://github.com/jenv/jenv)
    plenv                   # perl version from plenv (https://github.com/tokuhirom/plenv)
    phpenv                  # php version from phpenv (https://github.com/phpenv/phpenv)
    scalaenv                # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
    haskell_stack           # haskell version from stack (https://haskellstack.org/)
    kubecontext             # current kubernetes context (https://kubernetes.io/)
    terraform               # terraform workspace (https://www.terraform.io)
    # terraform_version     # terraform version (https://www.terraform.io)
    aws                     # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
    aws_eb_env              # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
    azure                   # azure account name (https://docs.microsoft.com/en-us/cli/azure)
    gcloud                  # google cloud cli account and project (https://cloud.google.com/)
    google_app_cred         # google application credentials (https://cloud.google.com/docs/authentication/production)
    toolbox                 # toolbox name (https://github.com/containers/toolbox)
    context                 # user@hostname
    nordvpn                 # nordvpn connection status, linux only (https://nordvpn.com/)
    ranger                  # ranger shell (https://github.com/ranger/ranger)
    nnn                     # nnn shell (https://github.com/jarun/nnn)
    xplr                    # xplr shell (https://github.com/sayanarijit/xplr)
    vim_shell               # vim shell indicator (:sh)
    midnight_commander      # midnight commander shell (https://midnight-commander.org/)
    nix_shell               # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
    # vpn_ip                # virtual private network indicator
    # load                  # CPU load
    # disk_usage            # disk usage
    # ram                   # free RAM
    # swap                  # used swap
    todo                    # todo items (https://github.com/todotxt/todo.txt-cli)
    timewarrior             # timewarrior tracking status (https://timewarrior.net/)
    taskwarrior             # taskwarrior task count (https://taskwarrior.org/)
    time                    # current time
    # =========================[ Line #2 ]=========================
    newline                 # \n
    # ip                    # ip address and bandwidth usage for a specified network interface
    # public_ip             # public IP address
    # proxy                 # system-wide http/https/ftp proxy
    # battery               # internal battery
    # wifi                  # wifi speed
    # example               # example user-defined segment (see prompt_example function below)
  )

  # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you.
  typeset -g POWERLEVEL9K_MODE=ascii
  # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid
  # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added.
  typeset -g POWERLEVEL9K_ICON_PADDING=none

  # Basic style options that define the overall look of your prompt. You probably don't want to
  # change them.
  typeset -g POWERLEVEL9K_BACKGROUND=                            # transparent background
  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE=  # no surrounding whitespace
  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' '  # separate segments with a space
  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR=        # no end-of-line symbol

  # When set to true, icons appear before content on both sides of the prompt. When set
  # to false, icons go after content. If empty or not set, icons go before content in the left
  # prompt and after content in the right prompt.
  #
  # You can also override it for a specific segment:
  #
  #   POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false
  #
  # Or for a specific segment in specific state:
  #
  #   POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false
  typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=true

  # Add an empty line before each prompt.
  typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false

  # Connect left prompt lines with these symbols.
  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=
  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX=
  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX=
  # Connect right prompt lines with these symbols.
  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX=
  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX=
  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX=

  # The left end of left prompt.
  typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
  # The right end of right prompt.
  typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL=

  # Ruler, a.k.a. the horizontal line before each prompt. If you set it to true, you'll
  # probably want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false above and
  # POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' below.
  typeset -g POWERLEVEL9K_SHOW_RULER=false
  typeset -g POWERLEVEL9K_RULER_CHAR='-'        # reasonable alternative: '·'
  typeset -g POWERLEVEL9K_RULER_FOREGROUND=7

  # Filler between left and right prompt on the first prompt line. You can set it to '·' or '-'
  # to make it easier to see the alignment between left and right prompt and to separate prompt
  # from command output. It serves the same purpose as ruler (see above) without increasing
  # the number of prompt lines. You'll probably want to set POWERLEVEL9K_SHOW_RULER=false
  # if using this. You might also like POWERLEVEL9K_PROMPT_ADD_NEWLINE=false for more compact
  # prompt.
  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR='.'
  if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then
    # The color of the filler.
    typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=7
    # Add a space between the end of left prompt and the filler.
    typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=' '
    # Add a space between the filler and the start of right prompt.
    typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL=' '
    # Start filler from the edge of the screen if there are no left segments on the first line.
    typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}'
    # End filler on the edge of the screen if there are no right segments on the first line.
    typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}'
  fi

  #################################[ os_icon: os identifier ]##################################
  # OS identifier color.
  typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=
  # Custom icon.
  # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐'

  ################################[ prompt_char: prompt symbol ]################################
  # Green prompt symbol if the last command succeeded.
  typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=2
  # Red prompt symbol if the last command failed.
  typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=1
  # Default prompt symbol.
  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='>'
  # Prompt symbol in command vi mode.
  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='<'
  # Prompt symbol in visual vi mode.
  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
  # Prompt symbol in overwrite vi mode.
  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='^'
  typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
  # No line terminator if prompt_char is the last segment.
  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=''
  # No line introducer if prompt_char is the first segment.
  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=

  ##################################[ dir: current directory ]##################################
  # Default current directory color.
  typeset -g POWERLEVEL9K_DIR_FOREGROUND=4
  # If directory is too long, shorten some of its segments to the shortest possible unique
  # prefix. The shortened directory can be tab-completed to the original.
  typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique
  # Replace removed segment suffixes with this symbol.
  typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
  # Color of the shortened directory segments.
  typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=4
  # Color of the anchor directory segments. Anchor segments are never shortened. The first
  # segment is always an anchor.
  typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=4
  # Set to true to display anchor directory segments in bold.
  typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=false
  # Don't shorten directories that contain any of these files. They are anchors.
  local anchor_files=(
    .bzr
    .citc
    .git
    .hg
    .node-version
    .python-version
    .go-version
    .ruby-version
    .lua-version
    .java-version
    .perl-version
    .php-version
    .tool-version
    .shorten_folder_marker
    .svn
    .terraform
    CVS
    Cargo.toml
    composer.json
    go.mod
    package.json
    stack.yaml
  )
  typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
  # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains
  # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is
  # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
  # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
  # and other directories don't.
  #
  # Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer.
  # This moves the truncation point to the right (positive offset) or to the left (negative offset)
  # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
  # respectively.
  typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
  # Don't shorten this many last directory segments. They are anchors.
  typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
  # Shorten directory if it's longer than this even if there is space for it. The value can
  # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
  # directory will be shortened only when prompt doesn't fit or when other parameters demand it
  # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
  # If set to `0`, directory will always be shortened to its minimum length.
  typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this
  # many columns for typing commands.
  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40
  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least
  # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands.
  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50
  # If set to true, embed a hyperlink into the directory. Useful for quickly
  # opening a directory in the file manager simply by clicking the link.
  # Can also be handy when the directory is shortened, as it allows you to see
  # the full directory that was used in previous commands.
  typeset -g POWERLEVEL9K_DIR_HYPERLINK=false

  # Enable special styling for non-writable directories. See POWERLEVEL9K_LOCK_ICON and
  # POWERLEVEL9K_DIR_CLASSES below.
  typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v2

  # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
  # and POWERLEVEL9K_DIR_CLASSES below.
  typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3

  # The default icon shown next to non-writable and non-existent directories when
  # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
  # typeset -g POWERLEVEL9K_LOCK_ICON='⭐'

  # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
  # directories. It must be an array with 3 * N elements. Each triplet consists of:
  #
  #   1. A pattern against which the current directory ($PWD) is matched. Matching is done with
  #      extended_glob option enabled.
  #   2. Directory class for the purpose of styling.
  #   3. An empty string.
  #
  # Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
  #
  # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
  # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
  #
  # For example, given these settings:
  #
  #   typeset -g POWERLEVEL9K_DIR_CLASSES=(
  #     '~/work(|/*)'  WORK     ''
  #     '~(|/*)'       HOME     ''
  #     '*'            DEFAULT  '')
  #
  # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
  # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
  # WORK_NON_EXISTENT.
  #
  # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
  # option to define custom colors and icons for different directory classes.
  #
  #   # Styling for WORK.
  #   typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐'
  #   typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=4
  #   typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=4
  #   typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=4
  #
  #   # Styling for WORK_NOT_WRITABLE.
  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=4
  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=4
  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=4#
  #
  #   Styling for WORK_NON_EXISTENT.
  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=4
  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=4
  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=4
  #
  # If a styling parameter isn't explicitly defined for some class, it falls back to the classless
  # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
  # back to POWERLEVEL9K_DIR_FOREGROUND.
  #
  typeset -g POWERLEVEL9K_DIR_CLASSES=()

  # Custom prefix.
  # typeset -g POWERLEVEL9K_DIR_PREFIX='%fin '

  #####################################[ vcs: git status ]######################################
  # Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon.
  typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=

  # Untracked files icon. It's really a question mark, your font isn't broken.
  # Change the value of this parameter to show a different icon.
  typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'

  # Formatter for Git status.
  #
  # Example output: master wip <42>42 *42 merge ~42 +42 !42 ?42.
  #
  # You can edit the function to customize how Git status looks.
  #
  # VCS_STATUS_* parameters are set by gitstatus plugin. See reference:
  # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
  function my_git_formatter() {
    emulate -L zsh

    if [[ -n $P9K_CONTENT ]]; then
      # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from
      # gitstatus plugin). VCS_STATUS_* parameters are not available in this case.
      typeset -g my_git_format=$P9K_CONTENT
      return
    fi

    if (( $1 )); then
      # Styling for up-to-date Git status.
      local       meta='%f'   # default foreground
      local      clean='%2F'  # green foreground
      local   modified='%3F'  # yellow foreground
      local  untracked='%4F'  # blue foreground
      local conflicted='%1F'  # red foreground
    else
      # Styling for incomplete and stale Git status.
      local       meta='%f'  # default foreground
      local      clean='%f'  # default foreground
      local   modified='%f'  # default foreground
      local  untracked='%f'  # default foreground
      local conflicted='%f'  # default foreground
    fi

    local res

    if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
      local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
      # If local branch name is at most 32 characters long, show it in full.
      # Otherwise show the first 12 .. the last 12.
      # Tip: To always show local branch name in full without truncation, delete the next line.
      (( $#branch > 32 )) && branch[13,-13]=".."  # <-- this line
      res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
    fi

    if [[ -n $VCS_STATUS_TAG
          # Show tag only if not on a branch.
          # Tip: To always show tag, delete the next line.
          && -z $VCS_STATUS_LOCAL_BRANCH  # <-- this line
        ]]; then
      local tag=${(V)VCS_STATUS_TAG}
      # If tag name is at most 32 characters long, show it in full.
      # Otherwise show the first 12 .. the last 12.
      # Tip: To always show tag name in full without truncation, delete the next line.
      (( $#tag > 32 )) && tag[13,-13]=".."  # <-- this line
      res+="${meta}#${clean}${tag//\%/%%}"
    fi

    # Display the current Git commit if there is no branch and no tag.
    # Tip: To always display the current Git commit, delete the next line.
    [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] &&  # <-- this line
      res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"

    # Show tracking branch name if it differs from local branch.
    if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
      res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"
    fi

    # Display "wip" if the latest commit's summary contains "wip" or "WIP".
    if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then
      res+=" ${modified}wip"
    fi

    # <42 if behind the remote.
    (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}<${VCS_STATUS_COMMITS_BEHIND}"
    # >42 if ahead of the remote; no leading space if also behind the remote: <42>42.
    (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
    (( VCS_STATUS_COMMITS_AHEAD  )) && res+="${clean}>${VCS_STATUS_COMMITS_AHEAD}"
    # <-42 if behind the push remote.
    (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}<-${VCS_STATUS_PUSH_COMMITS_BEHIND}"
    (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
    # ->42 if ahead of the push remote; no leading space if also behind: <-42->42.
    (( VCS_STATUS_PUSH_COMMITS_AHEAD  )) && res+="${clean}->${VCS_STATUS_PUSH_COMMITS_AHEAD}"
    # *42 if have stashes.
    (( VCS_STATUS_STASHES        )) && res+=" ${clean}*${VCS_STATUS_STASHES}"
    # 'merge' if the repo is in an unusual state.
    [[ -n $VCS_STATUS_ACTION     ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}"
    # ~42 if have merge conflicts.
    (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}"
    # +42 if have staged changes.
    (( VCS_STATUS_NUM_STAGED     )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}"
    # !42 if have unstaged changes.
    (( VCS_STATUS_NUM_UNSTAGED   )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}"
    # ?42 if have untracked files. It's really a question mark, your font isn't broken.
    # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon.
    # Remove the next line if you don't want to see untracked files at all.
    (( VCS_STATUS_NUM_UNTRACKED  )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}"
    # "-" if the number of unstaged files is unknown. This can happen due to
    # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower
    # than the number of files in the Git index, or due to bash.showDirtyState being set to false
    # in the repository config. The number of staged and untracked files may also be unknown
    # in this case.
    (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}-"

    typeset -g my_git_format=$res
  }
  functions -M my_git_formatter 2>/dev/null

  # Don't count the number of unstaged, untracked and conflicted files in Git repositories with
  # more than this many files in the index. Negative value means infinity.
  #
  # If you are working in Git repositories with tens of millions of files and seeing performance
  # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output
  # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's
  # config: `git config bash.showDirtyState false`.
  typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1

  # Don't show Git status in prompt for repositories whose workdir matches this pattern.
  # For example, if set to '~', the Git repository at $HOME/.git will be ignored.
  # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'.
  typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~'

  # Disable the default Git status formatting.
  typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
  # Install our own Git status formatter.
  typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}'
  typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}'
  # Enable counters for staged, unstaged, etc.
  typeset -g POWERLEVEL9K_VCS_{
Download .txt
gitextract__k_sodj9/

├── .config/
│   ├── Thunar/
│   │   ├── accels.scm
│   │   └── uca.xml
│   ├── btop/
│   │   ├── btop.conf
│   │   └── themes/
│   │       └── catppuccin.theme
│   ├── discocss/
│   │   ├── custom.css
│   │   └── preload.js
│   ├── dunst/
│   │   └── dunstrc
│   ├── fontconfig/
│   │   └── fonts.conf
│   ├── hypr/
│   │   ├── hyprland.conf
│   │   └── scripts/
│   │       ├── brightness_ctl.sh
│   │       ├── caffeine.sh
│   │       ├── lock.sh
│   │       ├── lock_on_sleep.sh
│   │       ├── logout.sh
│   │       ├── sleep.sh
│   │       ├── switch_kb_layout.sh
│   │       ├── toggle_bluetooth.sh
│   │       └── volume_ctl.sh
│   ├── kitty/
│   │   └── kitty.conf
│   ├── lf/
│   │   ├── colors
│   │   ├── icons
│   │   └── lfrc
│   ├── nvim/
│   │   ├── init.lua
│   │   ├── lua/
│   │   │   └── user/
│   │   │       ├── alpha.lua
│   │   │       ├── autocommands.lua
│   │   │       ├── autopairs.lua
│   │   │       ├── autotag.lua
│   │   │       ├── bufferline.lua
│   │   │       ├── cmp.lua
│   │   │       ├── colorizer.lua
│   │   │       ├── colorscheme.lua
│   │   │       ├── comment.lua
│   │   │       ├── cutlass.lua
│   │   │       ├── dap.lua
│   │   │       ├── diffview.lua
│   │   │       ├── gitsigns.lua
│   │   │       ├── illuminate.lua
│   │   │       ├── impatient.lua
│   │   │       ├── indentline.lua
│   │   │       ├── keymaps.lua
│   │   │       ├── live-command.lua
│   │   │       ├── lsp/
│   │   │       │   ├── handlers.lua
│   │   │       │   ├── init.lua
│   │   │       │   ├── mason.lua
│   │   │       │   ├── null-ls.lua
│   │   │       │   └── settings/
│   │   │       │       ├── hls.lua
│   │   │       │       ├── jsonls.lua
│   │   │       │       ├── prettier.json
│   │   │       │       ├── pyright.lua
│   │   │       │       └── sumneko_lua.lua
│   │   │       ├── lualine.lua
│   │   │       ├── nvim-tree.lua
│   │   │       ├── options.lua
│   │   │       ├── plugins.lua
│   │   │       ├── project.lua
│   │   │       ├── smart-splits.lua
│   │   │       ├── substitute.lua
│   │   │       ├── surround.lua
│   │   │       ├── telescope.lua
│   │   │       ├── testing.lua
│   │   │       ├── toggleterm.lua
│   │   │       ├── treesitter.lua
│   │   │       ├── trouble.lua
│   │   │       └── whichkey.lua
│   │   └── plugin/
│   │       └── packer_compiled.lua
│   ├── sddm-sugar-candy/
│   │   └── theme.conf
│   ├── spicetify/
│   │   ├── Extensions/
│   │   │   └── catppuccin-mocha.js
│   │   └── Themes/
│   │       └── catppuccin-mocha/
│   │           ├── assets/
│   │           │   └── .gitkeep
│   │           ├── color.ini
│   │           └── user.css
│   ├── waybar/
│   │   ├── config.jsonc
│   │   ├── scripts/
│   │   │   └── caffeine.sh
│   │   └── style.css
│   ├── wlogout/
│   │   ├── layout
│   │   └── style.css
│   ├── wofi/
│   │   ├── config
│   │   ├── style.css
│   │   └── wifi
│   ├── xfce4/
│   │   ├── helpers.rc
│   │   └── xfconf/
│   │       └── xfce-perchannel-xml/
│   │           └── thunar.xml
│   └── zsh/
│       └── catppuccin-tty.sh
├── .gitconfig
├── .gtkrc-2.0
├── .icons/
│   ├── Catppuccin-Cursor/
│   │   ├── cursors/
│   │   │   ├── all-scroll
│   │   │   ├── bd_double_arrow
│   │   │   ├── bottom_left_corner
│   │   │   ├── bottom_right_corner
│   │   │   ├── bottom_side
│   │   │   ├── bottom_tee
│   │   │   ├── cell
│   │   │   ├── center_ptr
│   │   │   ├── circle
│   │   │   ├── closedhand
│   │   │   ├── col-resize
│   │   │   ├── color-picker
│   │   │   ├── context-menu
│   │   │   ├── copy
│   │   │   ├── cross
│   │   │   ├── crosshair
│   │   │   ├── dnd-ask
│   │   │   ├── dnd-copy
│   │   │   ├── dnd-link
│   │   │   ├── dnd-move
│   │   │   ├── dnd-no-drop
│   │   │   ├── dot
│   │   │   ├── dotbox
│   │   │   ├── draft
│   │   │   ├── fd_double_arrow
│   │   │   ├── hand
│   │   │   ├── help
│   │   │   ├── left_ptr
│   │   │   ├── left_ptr_watch
│   │   │   ├── left_side
│   │   │   ├── left_tee
│   │   │   ├── link
│   │   │   ├── ll_angle
│   │   │   ├── lr_angle
│   │   │   ├── not-allowed
│   │   │   ├── openhand
│   │   │   ├── pencil
│   │   │   ├── pirate
│   │   │   ├── pointer-move
│   │   │   ├── right_ptr
│   │   │   ├── right_side
│   │   │   ├── right_tee
│   │   │   ├── row-resize
│   │   │   ├── sb_down_arrow
│   │   │   ├── sb_h_double_arrow
│   │   │   ├── sb_left_arrow
│   │   │   ├── sb_right_arrow
│   │   │   ├── sb_up_arrow
│   │   │   ├── sb_v_double_arrow
│   │   │   ├── size_all
│   │   │   ├── text
│   │   │   ├── top_left_corner
│   │   │   ├── top_right_corner
│   │   │   ├── top_side
│   │   │   ├── top_tee
│   │   │   ├── ul_angle
│   │   │   ├── ur_angle
│   │   │   ├── vertical-text
│   │   │   ├── watch
│   │   │   ├── x-cursor
│   │   │   ├── zoom-in
│   │   │   └── zoom-out
│   │   └── index.theme
│   └── default/
│       └── index.theme
├── .lessfilter
├── .local/
│   ├── bin/
│   │   ├── nvim_kitty
│   │   ├── spotify-adblock
│   │   └── wrappedhl
│   └── share/
│       └── applications/
│           ├── discord.desktop
│           ├── nvim.desktop
│           └── spotify.desktop
├── .p10k-tty.zsh
├── .p10k.zsh
├── .profile
├── .zshrc
└── README.md
Download .txt
SYMBOL INDEX (4 symbols across 2 files)

FILE: .config/discocss/preload.js
  function reload (line 6) | function reload(style) {
  function inject (line 10) | function inject({ document, window }) {

FILE: .config/spicetify/Extensions/catppuccin-mocha.js
  function waitForElement (line 20) | function waitForElement(els, func, timeout = 100) {
  function getKeyByValue (line 30) | function getKeyByValue(object, value) {
Condensed preview — 159 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (366K chars).
[
  {
    "path": ".config/Thunar/accels.scm",
    "chars": 5863,
    "preview": "; thunar GtkAccelMap rc-file         -*- scheme -*-\n; this file is an automated accelerator map dump\n;\n; (gtk_accel_path"
  },
  {
    "path": ".config/Thunar/uca.xml",
    "chars": 381,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<actions>\n<action>\n\t<icon>utilities-terminal</icon>\n\t<name>Open Terminal Here</na"
  },
  {
    "path": ".config/btop/btop.conf",
    "chars": 8308,
    "preview": "#? Config file for btop v. 1.2.12\n\n#* Name of a btop++/bpytop/bashtop formatted \".theme\" file, \"Default\" and \"TTY\" for b"
  },
  {
    "path": ".config/btop/themes/catppuccin.theme",
    "chars": 1156,
    "preview": "theme[main_bg]=\"#1E1E2E\"\ntheme[main_fg]=\"#CDD6F4\"\ntheme[title]=\"#CDD6F4\"\ntheme[hi_fg]=\"#89B4FA\"\ntheme[selected_bg]=\"#454"
  },
  {
    "path": ".config/discocss/custom.css",
    "chars": 8142,
    "preview": "/**\n * @name Catppuccin\n * @author Catppuccin\n * @version 0.0.8\n * @description 🎮 Soothing pastel theme for Discord\n * @"
  },
  {
    "path": ".config/discocss/preload.js",
    "chars": 791,
    "preview": "module.exports = () => {\n  const fs = require(\"fs\");\n  const confDir = \"/home/amitgold/.config/discocss\";\n  const cssFil"
  },
  {
    "path": ".config/dunst/dunstrc",
    "chars": 1531,
    "preview": "[global]\n    follow = mouse\n    indicate_hidden = yes\n\n    offset = 10x10\n\n    notification_height = 0\n\n    separator_he"
  },
  {
    "path": ".config/fontconfig/fonts.conf",
    "chars": 319,
    "preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE fontconfig SYSTEM \"urn:fontconfig:fonts.dtd\">\n<fontconfig>\n  <alias>\n    <family>monospa"
  },
  {
    "path": ".config/hypr/hyprland.conf",
    "chars": 6598,
    "preview": "#### Hyprland Config ####\n\nexec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP\nex"
  },
  {
    "path": ".config/hypr/scripts/brightness_ctl.sh",
    "chars": 1219,
    "preview": "#!/usr/bin/env bash\n\n# You can call this script like this:\n# $ ./brightnessControl.sh up\n# $ ./brightnessControl.sh down"
  },
  {
    "path": ".config/hypr/scripts/caffeine.sh",
    "chars": 414,
    "preview": "#!/bin/sh\n\nif pgrep -x sleep.sh > /dev/null; then\n\tdunstify -r 4444 -i /usr/share/icons/Papirus-Dark/symbolic/status/my-"
  },
  {
    "path": ".config/hypr/scripts/lock.sh",
    "chars": 688,
    "preview": "#!/bin/sh\n\nswaylock \\\n    --hide-keyboard-layout \\\n    --indicator-radius 100 \\\n    --indicator-thickness 7 \\\n    --ring"
  },
  {
    "path": ".config/hypr/scripts/lock_on_sleep.sh",
    "chars": 73,
    "preview": "#!/bin/sh\n\nswayidle -w before-sleep \"$HOME/.config/hypr/scripts/lock.sh\"\n"
  },
  {
    "path": ".config/hypr/scripts/logout.sh",
    "chars": 60,
    "preview": "#!/bin/sh\nwlogout --protocol layer-shell -b 5 -T 400 -B 400\n"
  },
  {
    "path": ".config/hypr/scripts/sleep.sh",
    "chars": 481,
    "preview": "#!/bin/sh\nswayidle -w \\\n        before-sleep \"$HOME/.config/hypr/scripts/lock.sh\" \\\n        timeout 160 'temp=$(brightne"
  },
  {
    "path": ".config/hypr/scripts/switch_kb_layout.sh",
    "chars": 221,
    "preview": "#!/bin/sh\n\nlayout_f=/tmp/kb_layout\n\ncase $(cat \"$layout_f\") in \n  us)\n    hyprctl keyword input:kb_layout il\n    echo il"
  },
  {
    "path": ".config/hypr/scripts/toggle_bluetooth.sh",
    "chars": 176,
    "preview": "#!/bin/sh\n\nstate=$(bluetoothctl -- show | grep Powered | awk '{ print $2 }')\n\nif [[ $state == 'yes' ]]; then\n    bluetoo"
  },
  {
    "path": ".config/hypr/scripts/volume_ctl.sh",
    "chars": 1744,
    "preview": "#!/usr/bin/env bash\n\n# You can call this script like this:\n# $ ./volumeControl.sh up\n# $ ./volumeControl.sh down\n# $ ./v"
  },
  {
    "path": ".config/kitty/kitty.conf",
    "chars": 2439,
    "preview": "# vim:ft=kitty\n\nscrollback_pager bash -c \"exec nvim 63<&0 0</dev/null -u NONE -c 'map <silent> q :qa!<CR>' -c 'set shell"
  },
  {
    "path": ".config/lf/colors",
    "chars": 3396,
    "preview": "# vim:ft=dircolors\n# (This is not a dircolors file but it helps to highlight colors and comments)\n\n# default values from"
  },
  {
    "path": ".config/lf/icons",
    "chars": 6531,
    "preview": "# vim:ft=conf\n\n# These examples require Nerd Fonts or a compatible font to be used.\n# See https://www.nerdfonts.com for "
  },
  {
    "path": ".config/lf/lfrc",
    "chars": 4911,
    "preview": "set shell bash\nset shellopts '-eu'\nset icons\nset relativenumber\nset scrolloff 10\nset ifs \"\\n\"\nset previewer less\n\n\nmap a"
  },
  {
    "path": ".config/nvim/init.lua",
    "chars": 829,
    "preview": "require(\"user.options\")\nrequire(\"user.keymaps\")\nrequire(\"user.plugins\")\nrequire(\"user.autocommands\")\nrequire(\"user.color"
  },
  {
    "path": ".config/nvim/lua/user/alpha.lua",
    "chars": 3264,
    "preview": "local status_ok, alpha = pcall(require, \"alpha\")\nif not status_ok then\n\treturn\nend\n\nlocal dashboard = require(\"alpha.the"
  },
  {
    "path": ".config/nvim/lua/user/autocommands.lua",
    "chars": 1511,
    "preview": "-- Use 'q' to quit from common plugins\nvim.api.nvim_create_autocmd({ \"FileType\" }, {\n  pattern = { \"qf\", \"help\", \"man\", "
  },
  {
    "path": ".config/nvim/lua/user/autopairs.lua",
    "chars": 434,
    "preview": "-- Setup nvim-cmp.\nlocal status_ok, npairs = pcall(require, \"nvim-autopairs\")\nif not status_ok then\n  return\nend\n\nnpairs"
  },
  {
    "path": ".config/nvim/lua/user/autotag.lua",
    "chars": 113,
    "preview": "local status_ok, autotag = pcall(require, \"nvim-ts-autotag\")\nif not status_ok then\n  return\nend\n\nautotag.setup()\n"
  },
  {
    "path": ".config/nvim/lua/user/bufferline.lua",
    "chars": 3756,
    "preview": "local status_ok, bufferline = pcall(require, \"bufferline\")\nif not status_ok then\n\treturn\nend\n\nbufferline.setup({\n\toption"
  },
  {
    "path": ".config/nvim/lua/user/cmp.lua",
    "chars": 3378,
    "preview": "local cmp_status_ok, cmp = pcall(require, \"cmp\")\nif not cmp_status_ok then\n\treturn\nend\n\nlocal snip_status_ok, luasnip = "
  },
  {
    "path": ".config/nvim/lua/user/colorizer.lua",
    "chars": 111,
    "preview": "local status_ok, colorizer = pcall(require, \"colorizer\")\nif not status_ok then\n  return\nend\n\ncolorizer.setup()\n"
  },
  {
    "path": ".config/nvim/lua/user/colorscheme.lua",
    "chars": 1183,
    "preview": "local status_ok, theme = pcall(require, \"catppuccin\")\nif not status_ok then\n\treturn\nend\n\nvim.g.catppuccin_flavour = \"moc"
  },
  {
    "path": ".config/nvim/lua/user/comment.lua",
    "chars": 200,
    "preview": "local status_ok, comment = pcall(require, \"Comment\")\nif not status_ok then\n\treturn\nend\n\ncomment.setup({\n\tpre_hook = requ"
  },
  {
    "path": ".config/nvim/lua/user/cutlass.lua",
    "chars": 150,
    "preview": "local status_ok, cutlass = pcall(require, \"cutlass\")\nif not status_ok then\n\treturn\nend\n\ncutlass.setup({\n\tcut_key = \"m\",\n"
  },
  {
    "path": ".config/nvim/lua/user/dap.lua",
    "chars": 1876,
    "preview": "local dap_status_ok, dap = pcall(require, \"dap\")\nif not dap_status_ok then\n\treturn\nend\n\nlocal dap_ui_status_ok, dapui = "
  },
  {
    "path": ".config/nvim/lua/user/diffview.lua",
    "chars": 100,
    "preview": "local status_ok, diff = pcall(require, \"diffview\")\nif not status_ok then\n  return\nend\n\ndiff.setup()\n"
  },
  {
    "path": ".config/nvim/lua/user/gitsigns.lua",
    "chars": 669,
    "preview": "local status_ok, gitsigns = pcall(require, \"gitsigns\")\nif not status_ok then\n  return\nend\n\ngitsigns.setup {\n  signs = {\n"
  },
  {
    "path": ".config/nvim/lua/user/illuminate.lua",
    "chars": 440,
    "preview": "local status_ok, illuminate = pcall(require, \"illuminate\")\nif not status_ok then\n\treturn\nend\n\nilluminate.configure({\n\tfi"
  },
  {
    "path": ".config/nvim/lua/user/impatient.lua",
    "chars": 120,
    "preview": "local status_ok, impatient = pcall(require, \"impatient\")\nif not status_ok then\n  return\nend\n\nimpatient.enable_profile()\n"
  },
  {
    "path": ".config/nvim/lua/user/indentline.lua",
    "chars": 396,
    "preview": "local status_ok, indent_blankline = pcall(require, \"indent_blankline\")\nif not status_ok then\n  return\nend\n\nindent_blankl"
  },
  {
    "path": ".config/nvim/lua/user/keymaps.lua",
    "chars": 2286,
    "preview": "-- Shorten function name\nlocal keymap = vim.keymap.set\n-- Silent keymap option\nlocal opts = { silent = true }\n\n--Remap s"
  },
  {
    "path": ".config/nvim/lua/user/live-command.lua",
    "chars": 397,
    "preview": "local status_ok, live = pcall(require, \"live-command\")\nif not status_ok then\n\treturn\nend\n\nlive.setup({\n\tcommands = {\n\t\tN"
  },
  {
    "path": ".config/nvim/lua/user/lsp/handlers.lua",
    "chars": 1897,
    "preview": "local M = {}\n\nlocal status_cmp_ok, cmp_nvim_lsp = pcall(require, \"cmp_nvim_lsp\")\nif not status_cmp_ok then\n\treturn\nend\n\n"
  },
  {
    "path": ".config/nvim/lua/user/lsp/init.lua",
    "chars": 175,
    "preview": "local status_ok, _ = pcall(require, \"lspconfig\")\nif not status_ok then\n\treturn\nend\n\nrequire(\"user.lsp.mason\")\nrequire(\"u"
  },
  {
    "path": ".config/nvim/lua/user/lsp/mason.lua",
    "chars": 1309,
    "preview": "local status_ok, mason = pcall(require, \"mason\")\nif not status_ok then\n\treturn\nend\n\nlocal servers = {\n\t\"sumneko_lua\",\n\t\""
  },
  {
    "path": ".config/nvim/lua/user/lsp/null-ls.lua",
    "chars": 1373,
    "preview": "local null_ls_status_ok, null_ls = pcall(require, \"null-ls\")\nif not null_ls_status_ok then\n\treturn\nend\n\n-- https://githu"
  },
  {
    "path": ".config/nvim/lua/user/lsp/settings/hls.lua",
    "chars": 173,
    "preview": "return {\n  settings = {\n    haskell = {\n      plugin = {\n        rename = {\n          config = {\n            crossModule"
  },
  {
    "path": ".config/nvim/lua/user/lsp/settings/jsonls.lua",
    "chars": 129,
    "preview": "return {\n\tsettings = {\n\t\tjson = {\n\t\t\tschemas = require('schemastore').json.schemas(),\n\t\t\tvalidate = { enable = true },\n\t"
  },
  {
    "path": ".config/nvim/lua/user/lsp/settings/prettier.json",
    "chars": 22,
    "preview": "{\n    \"tabWidth\": 4\n}\n"
  },
  {
    "path": ".config/nvim/lua/user/lsp/settings/pyright.lua",
    "chars": 115,
    "preview": "return {\n  settings = {\n    python = {\n      analysis = {\n        typeCheckingMode = \"off\",\n      },\n    },\n  },\n}\n"
  },
  {
    "path": ".config/nvim/lua/user/lsp/settings/sumneko_lua.lua",
    "chars": 329,
    "preview": "return {\n  settings = {\n    Lua = {\n      diagnostics = {\n        globals = { \"vim\" },\n      },\n      workspace = {\n    "
  },
  {
    "path": ".config/nvim/lua/user/lualine.lua",
    "chars": 2416,
    "preview": "local status_ok, lualine = pcall(require, \"lualine\")\nif not status_ok then\n\treturn\nend\n\nlocal null_ls_status_ok, null_ls"
  },
  {
    "path": ".config/nvim/lua/user/nvim-tree.lua",
    "chars": 1372,
    "preview": "local status_ok, nvim_tree = pcall(require, \"nvim-tree\")\nif not status_ok then\n  return\nend\n\nlocal config_status_ok, nvi"
  },
  {
    "path": ".config/nvim/lua/user/options.lua",
    "chars": 2548,
    "preview": "vim.opt.backup = false -- creates a backup file\nvim.opt.clipboard = \"unnamedplus\" -- allows neovim to access the system "
  },
  {
    "path": ".config/nvim/lua/user/plugins.lua",
    "chars": 4893,
    "preview": "local fn = vim.fn\n\n-- Automatically install packer\nlocal install_path = fn.stdpath(\"data\") .. \"/site/pack/packer/start/p"
  },
  {
    "path": ".config/nvim/lua/user/project.lua",
    "chars": 248,
    "preview": "local status_ok, project = pcall(require, \"project_nvim\")\nif not status_ok then\n\treturn\nend\nproject.setup()\n\nlocal tele_"
  },
  {
    "path": ".config/nvim/lua/user/smart-splits.lua",
    "chars": 109,
    "preview": "local status_ok, splits = pcall(require, \"smart-splits\")\nif not status_ok then\n\treturn\nend\n\nsplits.setup({})\n"
  },
  {
    "path": ".config/nvim/lua/user/substitute.lua",
    "chars": 412,
    "preview": "local status_ok, substitute = pcall(require, \"substitute\")\nif not status_ok then\n\treturn\nend\n\nsubstitute.setup()\n\nvim.ke"
  },
  {
    "path": ".config/nvim/lua/user/surround.lua",
    "chars": 112,
    "preview": "local status_ok, surround = pcall(require, \"nvim-surround\")\nif not status_ok then\n\treturn\nend\n\nsurround.setup()\n"
  },
  {
    "path": ".config/nvim/lua/user/telescope.lua",
    "chars": 746,
    "preview": "local status_ok, telescope = pcall(require, \"telescope\")\nif not status_ok then\n\treturn\nend\n\nlocal actions = require(\"tel"
  },
  {
    "path": ".config/nvim/lua/user/testing.lua",
    "chars": 324,
    "preview": "local status_ok, neotest = pcall(require, \"neotest\")\nif not status_ok then\n\treturn\nend\n\nneotest.setup({\n\tadapters = {\n\t\t"
  },
  {
    "path": ".config/nvim/lua/user/toggleterm.lua",
    "chars": 1082,
    "preview": "local status_ok, toggleterm = pcall(require, \"toggleterm\")\nif not status_ok then\n\treturn\nend\n\ntoggleterm.setup({\n\tsize ="
  },
  {
    "path": ".config/nvim/lua/user/treesitter.lua",
    "chars": 1484,
    "preview": "local status_ok, configs = pcall(require, \"nvim-treesitter.configs\")\nif not status_ok then\n\treturn\nend\n\nconfigs.setup({\n"
  },
  {
    "path": ".config/nvim/lua/user/trouble.lua",
    "chars": 107,
    "preview": "local status_ok, trouble = pcall(require, \"trouble\")\nif not status_ok then\n  return\nend\n\ntrouble.setup()\n\n\n"
  },
  {
    "path": ".config/nvim/lua/user/whichkey.lua",
    "chars": 8402,
    "preview": "local status_ok, which_key = pcall(require, \"which-key\")\nif not status_ok then\n\treturn\nend\n\nlocal setup = {\n\tplugins = {"
  },
  {
    "path": ".config/nvim/plugin/packer_compiled.lua",
    "chars": 17221,
    "preview": "-- Automatically generated packer.nvim plugin loader code\n\nif vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then\n"
  },
  {
    "path": ".config/sddm-sugar-candy/theme.conf",
    "chars": 6843,
    "preview": "[General]\n\nBackground=\"Backgrounds/kurz.png\"\n## Path relative to the theme root directory. Most standard image file form"
  },
  {
    "path": ".config/spicetify/Extensions/catppuccin-mocha.js",
    "chars": 1163,
    "preview": "// Color map\nlet colorPalette = {\n  rosewater: \"#f5e0dc\",\n  flamingo: \"#f2cdcd\",\n  pink: \"#f5c2e7\",\n  maroon: \"#eba0ac\","
  },
  {
    "path": ".config/spicetify/Themes/catppuccin-mocha/assets/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".config/spicetify/Themes/catppuccin-mocha/color.ini",
    "chars": 5973,
    "preview": "[rosewater]\ntext               = F5E0DC\nsubtext            = CDD6F4\naccent             = FAE3B0\nmain               = 1E1"
  },
  {
    "path": ".config/spicetify/Themes/catppuccin-mocha/user.css",
    "chars": 7133,
    "preview": "/* Color Pallette */\n/* Note: These variables should be used ONLY when needed across ALL of the color palettes. */\n:root"
  },
  {
    "path": ".config/waybar/config.jsonc",
    "chars": 2960,
    "preview": "{\n    \"layer\": \"top\",\n    \"position\": \"top\",\n    \"height\": 0,\n    \"modules-left\": [\"clock\", \"wlr/workspaces\"],\n    \"modu"
  },
  {
    "path": ".config/waybar/scripts/caffeine.sh",
    "chars": 118,
    "preview": "#!/bin/sh\n\nif pgrep -x sleep.sh > /dev/null; then\n  echo '{ \"percentage\": 0 }'\nelse\n  echo '{ \"percentage\": 100 }'\nfi\n"
  },
  {
    "path": ".config/waybar/style.css",
    "chars": 2068,
    "preview": "* {\n    border: none;\n    border-radius: 0;\n    font-family: monospace;\n    font-weight: bold;\n    font-size: 14px;\n    "
  },
  {
    "path": ".config/wlogout/layout",
    "chars": 556,
    "preview": "{\n    \"label\" : \"lock\",\n    \"action\" : \"~/.config/hypr/scripts/lock.sh\",\n    \"text\" : \"Lock\",\n    \"keybind\" : \"l\"\n}\n{\n  "
  },
  {
    "path": ".config/wlogout/style.css",
    "chars": 1212,
    "preview": "window {\n    font-family: monospace;\n    font-size: 14pt;\n    color: #cdd6f4; /* text */\n    background-color: rgba(30, "
  },
  {
    "path": ".config/wofi/config",
    "chars": 230,
    "preview": "width=800\nheight=400\nlocation=center\nshow=drun\nprompt=Search...\nfilter_rate=100\nallow_markup=true\nno_actions=true\nhalign"
  },
  {
    "path": ".config/wofi/style.css",
    "chars": 1025,
    "preview": "@define-color clear rgba(0, 0, 0, 0.0);\n@define-color primary rgba(0, 0, 0, 0.75);\n\nwindow {\n    margin: 2px;\n    border"
  },
  {
    "path": ".config/wofi/wifi",
    "chars": 180,
    "preview": "# Config for wofi-wifi-menu\n\n# position values:\n# 1 2 3\n# 8 0 4\n# 7 6 5\nPOSITION=3\n\n#y-offset\nYOFF=10\n\n#x-offset\nXOFF=-6"
  },
  {
    "path": ".config/xfce4/helpers.rc",
    "chars": 54,
    "preview": "TerminalEmulator=kitty\nTerminalEmulatorDismissed=true\n"
  },
  {
    "path": ".config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml",
    "chars": 1346,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<channel name=\"thunar\" version=\"1.0\">\n  <property name=\"last-view\" type=\"string\""
  },
  {
    "path": ".config/zsh/catppuccin-tty.sh",
    "chars": 904,
    "preview": "#!/usr/bin/env bash\n\nif [ \"$TERM\" = \"linux\" ]; then\n\tprintf %b '\\e]P011111B' # set background color to \"Base\"\n\tprintf %b"
  },
  {
    "path": ".gitconfig",
    "chars": 60,
    "preview": "[user]\n\temail = amit.wifi@gmail.com\n\tname = Amit Goldenberg\n"
  },
  {
    "path": ".gtkrc-2.0",
    "chars": 590,
    "preview": "# DO NOT EDIT! This file will be overwritten by LXAppearance.\n# Any customization should be done in ~/.gtkrc-2.0.mine in"
  },
  {
    "path": ".icons/Catppuccin-Cursor/index.theme",
    "chars": 38,
    "preview": "[Icon Theme]\nName=\"Simp1e-Catppuccin\"\n"
  },
  {
    "path": ".icons/default/index.theme",
    "chars": 135,
    "preview": "# This file is written by LXAppearance. Do not edit.\n[Icon Theme]\nName=Default\nComment=Default Cursor Theme\nInherits=Cat"
  },
  {
    "path": ".lessfilter",
    "chars": 724,
    "preview": "#! /usr/bin/env sh\n# this is a example of .lessfilter, you can change it\nmime=$(file -bL --mime-type \"$1\")\ncategory=${mi"
  },
  {
    "path": ".local/bin/nvim_kitty",
    "chars": 151,
    "preview": "#!/bin/env sh\n\nif [[ $TERM == 'xterm-kitty' ]]; then\n\tkitty @ set-spacing padding=0\n\tnvim \"$@\"\n\tkitty @ set-spacing padd"
  },
  {
    "path": ".local/bin/spotify-adblock",
    "chars": 58,
    "preview": "#!/bin/sh\n\nLD_PRELOAD=/usr/lib/spotify-adblock.so spotify\n"
  },
  {
    "path": ".local/bin/wrappedhl",
    "chars": 260,
    "preview": "#!/bin/sh\n\ncd ~\n\nexport _JAVA_AWT_WM_NONREPARENTING=1\nexport XCURSOR_SIZE=24\n\nexport LIBVA_DRIVER_NAME=nvidia\nexport XDG"
  },
  {
    "path": ".local/share/applications/discord.desktop",
    "chars": 314,
    "preview": "[Desktop Entry]\nName=Discord\nStartupWMClass=discord\nComment=All-in-one voice and text chat for gamers that's free, secur"
  },
  {
    "path": ".local/share/applications/nvim.desktop",
    "chars": 3066,
    "preview": "[Desktop Entry]\nName=Neovim\nGenericName=Text Editor\nGenericName[de]=Texteditor\nGenericName[fr]=Éditeur de texte\nGenericN"
  },
  {
    "path": ".local/share/applications/spotify.desktop",
    "chars": 281,
    "preview": "[Desktop Entry]\nType=Application\nName=Spotify\nGenericName=Music Player\nIcon=spotify-client\nTryExec=spotify\nExec=env LD_P"
  },
  {
    "path": ".p10k-tty.zsh",
    "chars": 84568,
    "preview": "# Generated by Powerlevel10k configuration wizard on 2022-08-22 at 14:16 IDT.\n# Based on romkatv/powerlevel10k/config/p1"
  },
  {
    "path": ".p10k.zsh",
    "chars": 90031,
    "preview": "# Generated by Powerlevel10k configuration wizard on 2022-09-19 at 01:26 IDT.\n# Based on romkatv/powerlevel10k/config/p1"
  },
  {
    "path": ".profile",
    "chars": 710,
    "preview": "export EDITOR=nvim_kitty\nexport VISUAL=nvim_kitty\nexport QT_QPA_PLATFORMTHEME=qt5ct \nexport BAT_THEME=\"Catppuccin-mocha\""
  },
  {
    "path": ".zshrc",
    "chars": 4019,
    "preview": "# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.\n# Initialization code that may require "
  },
  {
    "path": "README.md",
    "chars": 1022,
    "preview": "<h1 align=\"center\">AmitGold's dotfiles</h1>\n<img src='.screenshot.png'>\n\n## Starring!\n\n-   **Catppuccin Mocha**\n-   **Hy"
  }
]

// ... and 62 more files (download for full content)

About this extraction

This page contains the full source code of the AmitGolden/dotfiles GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 159 files (333.4 KB), approximately 104.4k tokens, and a symbol index with 4 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!