diff --git a/.config/.tmux.conf b/.config/.tmux.conf index a31e224..14ebe29 100644 --- a/.config/.tmux.conf +++ b/.config/.tmux.conf @@ -1,32 +1,24 @@ set -g default-terminal "tmux-256color" set -ag terminal-overrides ",xterm-256color:RGB" -# set -g default-terminal "screen-256color" set-option -g focus-events on -set -g prefix C-b -# unbind C-b -bind-key C-b send-prefix +# -- general ------------------------------------------------------------------- -unbind % -bind | split-window -h -c "#{pane_current_path}" - -unbind '"' -bind - split-window -v -c "#{pane_current_path}" - -unbind r -bind r source-file ~/.tmux.conf - -bind j resize-pane -D 5 -bind k resize-pane -U 5 -bind l resize-pane -R 5 -bind h resize-pane -L 5 - -bind -r m resize-pane -Z set -g mouse on +setw -g xterm-keys on +set -s escape-time 10 # faster command sequences +set -sg repeat-time 500 # increase repeat timeout +set -s focus-events on -set-window-option -g mode-keys vi +set -g prefix2 C-b # GNU-Screen compatible prefix +bind C-b send-prefix -2 + +set -q -g status-utf8 on # expect UTF-8 (tmux < 2.2) +setw -q -g utf8 on + +set -g history-limit 5000 # boost history bind-key -T copy-mode-vi 'v' send -X begin-selection # start selecting text with "v" bind-key -T copy-mode-vi 'y' send -X copy-selection # copy text with "y" @@ -36,6 +28,97 @@ unbind -T copy-mode-vi MouseDragEnd1Pane # don't exit copy mode when dragging wi # remove delay for exiting insert mode with ESC in Neovim set -sg escape-time 10 +# edit configuration +%if #{>=:#{version},3.0} +bind e new-window -n "#{TMUX_CONF_LOCAL}" -e EDITOR="$EDITOR" sh -c 'case "${EDITOR:-vim}" in *vim*) ${EDITOR:-vim} -c ":set syntax=tmux" "$TMUX_CONF_LOCAL";; *) $EDITOR "$TMUX_CONF_LOCAL";; esac && "$TMUX_PROGRAM" ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} source "$TMUX_CONF" \; display "$TMUX_CONF_LOCAL sourced"' +%else +set-environment -g EDITOR "$EDITOR" +bind e new-window -n "#{TMUX_CONF_LOCAL}" sh -c 'case "${EDITOR:-vim}" in *vim*) ${EDITOR:-vim} -c ":set syntax=tmux" "$TMUX_CONF_LOCAL";; *) $EDITOR "$TMUX_CONF_LOCAL";; esac && "$TMUX_PROGRAM" ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} source "$TMUX_CONF" \; display "$TMUX_CONF_LOCAL sourced"' +%endif + +# reload configuration +bind r run "sh -c '\"\$TMUX_PROGRAM\" \${TMUX_SOCKET:+-S \"\$TMUX_SOCKET\"} source \"\$TMUX_CONF\"'" \; display "#{TMUX_CONF} sourced" + +set-window-option -g mode-keys vi + +# -- display ------------------------------------------------------------------- + +set -g base-index 1 # start windows numbering at 1 +setw -g pane-base-index 1 # make pane numbering consistent with windows + +setw -g automatic-rename on # rename window to reflect current program +set -g renumber-windows on # renumber windows when a window is closed + +set -g set-titles on # set terminal title + +set -g display-panes-time 800 # slightly longer pane indicators display time +set -g display-time 1000 # slightly longer status messages display time + +set -g status-interval 10 # redraw status line every 10 seconds + +# activity +set -g monitor-activity on +set -g visual-activity off + +set -g monitor-activity off +set -g bell-action none +set -g visual-bell off +# -- navigation ---------------------------------------------------------------- + +# create session +# bind C-c new-session + +# find session +bind C-f command-prompt -p find-session 'switch-client -t %%' + +# session navigation +bind BTab switch-client -l # move to last session + +# split current window horizontally +bind - split-window -v -c "#{pane_current_path}" +# split current window vertically +bind _ split-window -h -c "#{pane_current_path}" + +# pane navigation +bind -r h select-pane -L # move left +bind -r j select-pane -D # move down +bind -r k select-pane -U # move up +bind -r l select-pane -R # move right +bind C-q swap-pane -D # swap current pane with the next one +bind C-e swap-pane -U # swap current pane with the previous one + +# maximize current pane +bind + run "cut -c3- '#{TMUX_CONF}' | sh -s _maximize_pane '#{session_name}' '#D'" + +# pane resizing +bind -r H resize-pane -L 2 +bind -r J resize-pane -D 2 +bind -r K resize-pane -U 2 +bind -r L resize-pane -R 2 + +# window navigation +unbind n +unbind p +bind -r C-h previous-window # select previous window +bind -r C-l next-window # select next window +bind Tab last-window # move to last active window + + +# -- copy mode ----------------------------------------------------------------- + +bind Enter copy-mode # enter copy mode + +bind -T copy-mode-vi v send -X begin-selection +bind -T copy-mode-vi C-v send -X rectangle-toggle +bind -T copy-mode-vi y send -X copy-selection-and-cancel +bind -T copy-mode-vi Escape send -X cancel +bind -T copy-mode-vi H send -X start-of-line +bind -T copy-mode-vi L send -X end-of-line + + + + +# NOTE: -------------------------------------------------------------------------------------------------------------------- # tpm plugin set -g @plugin 'catppuccin/tmux' # set -g @plugin 'xamut/tmux-weather' @@ -76,8 +159,8 @@ set -g @catppuccin_window_status_icon_enable "yes" set -g @catppuccin_window_status_enable "yes" set -g @catppuccin_status_default "on" # icons -set -g @catppuccin_icon_window_last " 󰃀 " -set -g @catppuccin_icon_window_current "  " +set -g @catppuccin_icon_window_last "󰃀 " +set -g @catppuccin_icon_window_current " " set -g status-position top diff --git a/.config/.zshrc b/.config/.zshrc index 768b271..c7a8b40 100644 --- a/.config/.zshrc +++ b/.config/.zshrc @@ -1,14 +1,15 @@ - -# If you come from bash you might have to change your $PATH. -# export PATH=$HOME/bin:/usr/local/bin:$PATH -# zmodload zsh/zprof -# export TERM=screen-256color export PYOPENGL_PLATFORM=osmesa -# export GTK_IM_MODULE=fcitx -# export QT_IM_MODULE=fcitx -# export XMODIFIERS=@im=fcitx export PRIMARY_MONITOR_WORKSPACE=1 export SECONDARY_MONITOR_WORKSPACE=2 +export VIRTUAL_ENV_DISABLE_PROMPT=1 +export MYPYPATH="/home/duckq1u/miniconda3/envs/pytorch" + +export ROCM_PATH="/opt/rocm" +# export CMAKE_PREFIX_PATH="/home/duckq1u/miniconda3/envs/pytorch/lib/cmake" +export PYTORCH_ROCM_ARCH="gfx1010" +# export HSA_OVERRIDE_GFX_VERSION=10.1.0 +# export HIP_VISIBLE_DEVICES=0 +export LD_LIBRARY_PATH="/opt/rocm/" # HACK: Config auto-suggestion as well as oh-my-posh eval "$(oh-my-posh init zsh --config ~/montys.omp.json)" @@ -71,13 +72,16 @@ zstyle ':completion:*' menu select alias nv='nvim' alias lz='lazygit' # alias la='eza --color=always --long --git --no-filesize --icons=always --no-time --no-permissions -a' -alias la='eza -a --icons=always --color=always --git' +alias ls='eza -a --icons=always --color=always --git' alias hh='cd ~' alias showport='sudo lsof -i -P -n | grep LISTEN' -alias shutdown='sudo shutdown -h +60' +alias shutdowntime='sudo shutdown -h +60' alias docs='cd ~/Documents/' alias zrok='~/Documents/appimage/zrok' +test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)" +test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" + jointmux(){ SESSION_NAME="duckq" @@ -87,7 +91,7 @@ jointmux(){ else # Check if the tmux session already exists if tmux has-session -t $SESSION_NAME 2>/dev/null; then - # Attach to the existing tmux session + # Attach to the existing tmux session tmux attach-session -t $SESSION_NAME else # Start a new tmux session @@ -98,13 +102,16 @@ jointmux(){ } appearance(){ - pokemon-colorscripts -n charizard -f mega-x + # pokemon-colorscripts -n charizard -f mega-x + pokemon-colorscripts -n darkrai --no-title cat ~/.conda/environments.txt } + cls(){ clear appearance } + rs(){ zsh appearance @@ -115,25 +122,22 @@ reloadbar(){ ags & } alias listpkg='pacman -Qm' - +alias vesktop='vesktop --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime --wayland-text-input-v3' # bsidian --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime' +alias obsidian='obsidian --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime --wayland-text-input-v3' +alias llm='~/Documents/appimage/LM_Studio-0.3.5.AppImage' +alias via='~/Documents/appimage/via-3.0.0-linux.AppImage --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime --wayland-text-input-v3' alias tmat='jointmux' alias tmdt='tmux detach' -# HACK: init tmux -# tmat duckq - # HACK: Init command -# -# Display Pokemon-colorscripts -# Project page: https://gitlab.com/phoneybadger/pokemon-colorscripts#on-other-distros-and-macos -pokemon-colorscripts -n charizard -f mega-x -cat ~/.conda/environments.txt +appearance # HACK: Keybindings bindkey '^g' autosuggest-accept bindkey '^p' history-search-backward bindkey '^n' history-search-forward bindkey '^[w' kill-region +bindkey "^H" backward-delete-word # zprof # conda env list @@ -155,3 +159,6 @@ unset __conda_setup # <<< conda initialize <<< conda activate pytorch + +# Added by LM Studio CLI (lms) +export PATH="$PATH:/home/duckq1u/.cache/lm-studio/bin" diff --git a/.config/btop/btop.conf b/.config/btop/btop.conf index 5128dc2..cb4c0ff 100644 --- a/.config/btop/btop.conf +++ b/.config/btop/btop.conf @@ -2,7 +2,7 @@ #* 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 = "Default" +color_theme = "/usr/share/btop/themes/gruvbox_material_dark.theme" #* If the theme set background should be shown, set to False if you want terminal background transparency. theme_background = True @@ -53,11 +53,11 @@ graph_symbol_proc = "default" shown_boxes = "cpu net proc mem" #* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. -update_ms = 2000 +update_ms = 1000 #* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", #* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. -proc_sorting = "cpu lazy" +proc_sorting = "memory" #* Reverse sorting order, True or False. proc_reversed = False @@ -72,7 +72,7 @@ proc_colors = True 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 +proc_per_core = True #* Show process memory as bytes instead of percent. proc_mem_bytes = True @@ -169,7 +169,7 @@ show_swap = True swap_disk = True #* If mem box should be split to also show disks info. -show_disks = True +show_disks = False #* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. only_physical = True @@ -187,7 +187,7 @@ disk_free_priv = False show_io_stat = True #* Toggles io mode for disks, showing big graphs for disk read/write speeds. -io_mode = False +io_mode = True #* Set to True to show combined read/write io graphs in io mode. io_graph_combined = False @@ -205,7 +205,7 @@ net_upload = 100 net_auto = True #* Sync the auto scaling for download and upload to whichever currently has the highest scale. -net_sync = True +net_sync = False #* Starts with the Network Interface specified here. net_iface = "" @@ -221,7 +221,7 @@ show_battery_watts = True #* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". #* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. -log_level = "WARNING" +log_level = "ERROR" #* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. nvml_measure_pcie_speeds = True diff --git a/.config/btop/btop.log b/.config/btop/btop.log new file mode 100644 index 0000000..50a946b --- /dev/null +++ b/.config/btop/btop.log @@ -0,0 +1,5 @@ + +2025/01/06 (15:43:41) | ===> btop++ v.1.4.0 +2025/01/06 (15:43:41) | ERROR: Stall in Runner thread, restarting! +2025/01/06 (15:44:10) | ERROR: Stall in Runner thread, restarting! +2025/01/06 (15:44:43) | ERROR: Stall in Runner thread, restarting! diff --git a/.config/btop/themes/btop.conf b/.config/btop/themes/btop.conf deleted file mode 100644 index 5128dc2..0000000 --- a/.config/btop/themes/btop.conf +++ /dev/null @@ -1,248 +0,0 @@ -#? Config file for btop v. 1.4.0 - -#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. -#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" -color_theme = "Default" - -#* If the theme set background should be shown, set to False if you want terminal background transparency. -theme_background = True - -#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. -truecolor = True - -#* Set to true to force tty mode regardless if a real tty has been detected or not. -#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. -force_tty = False - -#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. -#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. -#* Use whitespace " " as separator between different presets. -#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" -presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" - -#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. -#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. -vim_keys = True - -#* Rounded corners on boxes, is ignored if TTY mode is ON. -rounded_corners = True - -#* Default symbols to use for graph creation, "braille", "block" or "tty". -#* "braille" offers the highest resolution but might not be included in all fonts. -#* "block" has half the resolution of braille but uses more common characters. -#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. -#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. -graph_symbol = "braille" - -# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". -graph_symbol_cpu = "default" - -# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty". -graph_symbol_gpu = "default" - -# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". -graph_symbol_mem = "default" - -# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". -graph_symbol_net = "default" - -# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". -graph_symbol_proc = "default" - -#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. -shown_boxes = "cpu net proc mem" - -#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. -update_ms = 2000 - -#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", -#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. -proc_sorting = "cpu lazy" - -#* Reverse sorting order, True or False. -proc_reversed = False - -#* Show processes as a tree. -proc_tree = False - -#* Use the cpu graph colors in the process list. -proc_colors = True - -#* Use a darkening gradient in the process list. -proc_gradient = True - -#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. -proc_per_core = False - -#* Show process memory as bytes instead of percent. -proc_mem_bytes = True - -#* Show cpu graph for each process. -proc_cpu_graphs = True - -#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) -proc_info_smaps = False - -#* Show proc box on left side of screen instead of right. -proc_left = False - -#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). -proc_filter_kernel = False - -#* In tree-view, always accumulate child process resources in the parent process. -proc_aggregate = False - -#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. -#* Select from a list of detected attributes from the options menu. -cpu_graph_upper = "Auto" - -#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. -#* Select from a list of detected attributes from the options menu. -cpu_graph_lower = "Auto" - -#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off". -show_gpu_info = "Auto" - -#* Toggles if the lower CPU graph should be inverted. -cpu_invert_lower = True - -#* Set to True to completely disable the lower CPU graph. -cpu_single_graph = False - -#* Show cpu box at bottom of screen instead of top. -cpu_bottom = False - -#* Shows the system uptime in the CPU box. -show_uptime = True - -#* Show cpu temperature. -check_temp = True - -#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. -cpu_sensor = "Auto" - -#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. -show_coretemp = True - -#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. -#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. -#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. -#* Example: "4:0 5:1 6:3" -cpu_core_map = "" - -#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". -temp_scale = "celsius" - -#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. -base_10_sizes = False - -#* Show CPU frequency. -show_cpu_freq = True - -#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. -#* Special formatting: /host = hostname | /user = username | /uptime = system uptime -clock_format = "%X" - -#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. -background_update = True - -#* Custom cpu model name, empty string to disable. -custom_cpu_name = "" - -#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". -#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user". -disks_filter = "" - -#* Show graphs instead of meters for memory values. -mem_graphs = True - -#* Show mem box below net box instead of above. -mem_below_net = False - -#* Count ZFS ARC in cached and available memory. -zfs_arc_cached = True - -#* If swap memory should be shown in memory box. -show_swap = True - -#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. -swap_disk = True - -#* If mem box should be split to also show disks info. -show_disks = True - -#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. -only_physical = True - -#* Read disks list from /etc/fstab. This also disables only_physical. -use_fstab = True - -#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) -zfs_hide_datasets = False - -#* Set to true to show available disk space for privileged users. -disk_free_priv = False - -#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. -show_io_stat = True - -#* Toggles io mode for disks, showing big graphs for disk read/write speeds. -io_mode = False - -#* Set to True to show combined read/write io graphs in io mode. -io_graph_combined = False - -#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". -#* Example: "/mnt/media:100 /:20 /boot:1". -io_graph_speeds = "" - -#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. -net_download = 100 - -net_upload = 100 - -#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. -net_auto = True - -#* Sync the auto scaling for download and upload to whichever currently has the highest scale. -net_sync = True - -#* Starts with the Network Interface specified here. -net_iface = "" - -#* Show battery stats in top right if battery is present. -show_battery = True - -#* Which battery to use if multiple are present. "Auto" for auto detection. -selected_battery = "Auto" - -#* Show power stats of battery next to charge indicator. -show_battery_watts = True - -#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". -#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. -log_level = "WARNING" - -#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. -nvml_measure_pcie_speeds = True - -#* Horizontally mirror the GPU graph. -gpu_mirror_graph = True - -#* Custom gpu0 model name, empty string to disable. -custom_gpu_name0 = "" - -#* Custom gpu1 model name, empty string to disable. -custom_gpu_name1 = "" - -#* Custom gpu2 model name, empty string to disable. -custom_gpu_name2 = "" - -#* Custom gpu3 model name, empty string to disable. -custom_gpu_name3 = "" - -#* Custom gpu4 model name, empty string to disable. -custom_gpu_name4 = "" - -#* Custom gpu5 model name, empty string to disable. -custom_gpu_name5 = "" diff --git a/.config/btop/themes/gruvbox_dark.theme b/.config/btop/themes/gruvbox_dark.theme new file mode 100644 index 0000000..a3a0c9e --- /dev/null +++ b/.config/btop/themes/gruvbox_dark.theme @@ -0,0 +1,98 @@ +# Bashtop gruvbox (https://github.com/morhetz/gruvbox) theme +# First version created By BachoSeven +# Adjustments to proper colors by Pietryszak (https://github.com/pietryszak/) + +# Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255" +# example for white: "#FFFFFF", "#ff" or "255 255 255". + +# All graphs and meters can be gradients +# For single color graphs leave "mid" and "end" variable empty. +# Use "start" and "end" variables for two color gradient +# Use "start", "mid" and "end" for three color gradient + +# Main background, empty for terminal default, need to be empty if you want transparent background +theme[main_bg]="#282828" + +# Main text color +theme[main_fg]="#EBDBB2" + +# Title color for boxes +theme[title]="#EBDBB2" + +# Highlight color for keyboard shortcuts +theme[hi_fg]="#CC241D" + +# Background color of selected items +theme[selected_bg]="#32302F" + +# Foreground color of selected items +theme[selected_fg]="#D3869B" + +# Color of inactive/disabled text +theme[inactive_fg]="#3C3836" + +# Color of text appearing on top of graphs, i.e uptime and current network graph scaling +theme[graph_text]="#A89984" + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="#98971A" + +# Cpu box outline color +theme[cpu_box]="#A89984" + +# Memory/disks box outline color +theme[mem_box]="#A89984" + +# Net up/down box outline color +theme[net_box]="#A89984" + +# Processes box outline color +theme[proc_box]="#A89984" + +# Box divider line and small boxes line color +theme[div_line]="#A89984" + +# Temperature graph colors +theme[temp_start]="#98971A" +theme[temp_mid]="" +theme[temp_end]="#CC241D" + +# CPU graph colors +theme[cpu_start]="#8EC07C" +theme[cpu_mid]="#D79921" +theme[cpu_end]="#CC241D" + +# Mem/Disk free meter +theme[free_start]="#CC241D" +theme[free_mid]="#D79921" +theme[free_end]="#8EC07C" + +# Mem/Disk cached meter +theme[cached_start]="#458588" +theme[cached_mid]="#83A598" +theme[cached_end]="#8EC07C" + +# Mem/Disk available meter +theme[available_start]="#CC241D" +theme[available_mid]="#D65D0E" +theme[available_end]="#FABD2F" + +# Mem/Disk used meter +theme[used_start]="#8EC07C" +theme[used_mid]="#D65D0E" +theme[used_end]="#CC241D" + +# Download graph colors +theme[download_start]="#98971A" +theme[download_mid]="#689d6A" +theme[download_end]="#B8BB26" + +# Upload graph colors +theme[upload_start]="#CC241D" +theme[upload_mid]="#D65d0E" +theme[upload_end]="#FABF2F" + +# Process box color gradient for threads, mem and cpu usage +theme[process_start]="#8EC07C" +theme[process_mid]="#FE8019" +theme[process_end]="#CC241D" diff --git a/.config/btop/themes/tokyo_night.theme b/.config/btop/themes/tokyo_night.theme new file mode 100644 index 0000000..b8200ec --- /dev/null +++ b/.config/btop/themes/tokyo_night.theme @@ -0,0 +1,81 @@ +# Theme: tokyo-night +# By: Pascal Jaeger + +# Main bg +theme[main_bg]="#1a1b26" + +# Main text color +theme[main_fg]="#cfc9c2" + +# Title color for boxes +theme[title]="#cfc9c2" + +# Highlight color for keyboard shortcuts +theme[hi_fg]="#7dcfff" + +# Background color of selected item in processes box +theme[selected_bg]="#414868" + +# Foreground color of selected item in processes box +theme[selected_fg]="#cfc9c2" + +# Color of inactive/disabled text +theme[inactive_fg]="#565f89" + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="#7dcfff" + +# Cpu box outline color +theme[cpu_box]="#565f89" + +# Memory/disks box outline color +theme[mem_box]="#565f89" + +# Net up/down box outline color +theme[net_box]="#565f89" + +# Processes box outline color +theme[proc_box]="#565f89" + +# Box divider line and small boxes line color +theme[div_line]="#565f89" + +# Temperature graph colors +theme[temp_start]="#9ece6a" +theme[temp_mid]="#e0af68" +theme[temp_end]="#f7768e" + +# CPU graph colors +theme[cpu_start]="#9ece6a" +theme[cpu_mid]="#e0af68" +theme[cpu_end]="#f7768e" + +# Mem/Disk free meter +theme[free_start]="#9ece6a" +theme[free_mid]="#e0af68" +theme[free_end]="#f7768e" + +# Mem/Disk cached meter +theme[cached_start]="#9ece6a" +theme[cached_mid]="#e0af68" +theme[cached_end]="#f7768e" + +# Mem/Disk available meter +theme[available_start]="#9ece6a" +theme[available_mid]="#e0af68" +theme[available_end]="#f7768e" + +# Mem/Disk used meter +theme[used_start]="#9ece6a" +theme[used_mid]="#e0af68" +theme[used_end]="#f7768e" + +# Download graph colors +theme[download_start]="#9ece6a" +theme[download_mid]="#e0af68" +theme[download_end]="#f7768e" + +# Upload graph colors +theme[upload_start]="#9ece6a" +theme[upload_mid]="#e0af68" +theme[upload_end]="#f7768e" diff --git a/.config/hyde/themes/Gruvbox Retro/wall.set b/.config/hyde/themes/Gruvbox Retro/wall.set index 1b3a3b0..7cee08a 120000 --- a/.config/hyde/themes/Gruvbox Retro/wall.set +++ b/.config/hyde/themes/Gruvbox Retro/wall.set @@ -1 +1 @@ -/home/duckq1u/.config/hyde/themes/Gruvbox Retro/wallpapers/earth.gif \ No newline at end of file +/home/duckq1u/.config/hyde/themes/Gruvbox Retro/wallpapers/lady.png \ No newline at end of file diff --git a/.config/hyde/themes/Gruvbox Retro/wallpapers/Bunny.gif b/.config/hyde/themes/Gruvbox Retro/wallpapers/Bunny.gif new file mode 100644 index 0000000..a309297 Binary files /dev/null and b/.config/hyde/themes/Gruvbox Retro/wallpapers/Bunny.gif differ diff --git a/.config/hyde/themes/Gruvbox Retro/wallpapers/Coffee.gif b/.config/hyde/themes/Gruvbox Retro/wallpapers/Coffee.gif new file mode 100644 index 0000000..44ec66c Binary files /dev/null and b/.config/hyde/themes/Gruvbox Retro/wallpapers/Coffee.gif differ diff --git a/.config/hyde/themes/Gruvbox Retro/wallpapers/Enough.gif b/.config/hyde/themes/Gruvbox Retro/wallpapers/Enough.gif new file mode 100644 index 0000000..b25123f Binary files /dev/null and b/.config/hyde/themes/Gruvbox Retro/wallpapers/Enough.gif differ diff --git a/.config/hyde/themes/Gruvbox Retro/wallpapers/Euso.gif b/.config/hyde/themes/Gruvbox Retro/wallpapers/Euso.gif new file mode 100644 index 0000000..63ec658 Binary files /dev/null and b/.config/hyde/themes/Gruvbox Retro/wallpapers/Euso.gif differ diff --git a/.config/hyde/themes/Gruvbox Retro/wallpapers/Halloween.gif b/.config/hyde/themes/Gruvbox Retro/wallpapers/Halloween.gif new file mode 100644 index 0000000..e9609e1 Binary files /dev/null and b/.config/hyde/themes/Gruvbox Retro/wallpapers/Halloween.gif differ diff --git a/.config/hyde/themes/Gruvbox Retro/wallpapers/NighLightCity.gif b/.config/hyde/themes/Gruvbox Retro/wallpapers/NighLightCity.gif new file mode 100644 index 0000000..98b1550 Binary files /dev/null and b/.config/hyde/themes/Gruvbox Retro/wallpapers/NighLightCity.gif differ diff --git a/.config/hyde/themes/Gruvbox Retro/wallpapers/RockNRoll.gif b/.config/hyde/themes/Gruvbox Retro/wallpapers/RockNRoll.gif new file mode 100644 index 0000000..2e80cef Binary files /dev/null and b/.config/hyde/themes/Gruvbox Retro/wallpapers/RockNRoll.gif differ diff --git a/.config/hyde/themes/Gruvbox Retro/wallpapers/RockNRollWHeart.gif b/.config/hyde/themes/Gruvbox Retro/wallpapers/RockNRollWHeart.gif new file mode 100644 index 0000000..91c7518 Binary files /dev/null and b/.config/hyde/themes/Gruvbox Retro/wallpapers/RockNRollWHeart.gif differ diff --git a/.config/hyde/themes/Gruvbox Retro/wallpapers/SkateBoardV2.gif b/.config/hyde/themes/Gruvbox Retro/wallpapers/SkateBoardV2.gif new file mode 100644 index 0000000..8d8b326 Binary files /dev/null and b/.config/hyde/themes/Gruvbox Retro/wallpapers/SkateBoardV2.gif differ diff --git a/.config/hyde/themes/Gruvbox Retro/wallpapers/pokemon.gif b/.config/hyde/themes/Gruvbox Retro/wallpapers/pokemon.gif new file mode 100644 index 0000000..c46b9aa Binary files /dev/null and b/.config/hyde/themes/Gruvbox Retro/wallpapers/pokemon.gif differ diff --git a/.config/hyde/themes/Gruvbox Retro/wallpapers/runner.gif b/.config/hyde/themes/Gruvbox Retro/wallpapers/runner.gif new file mode 100644 index 0000000..b585967 Binary files /dev/null and b/.config/hyde/themes/Gruvbox Retro/wallpapers/runner.gif differ diff --git a/.config/hyde/themes/Gruvbox Retro/wallpapers/spidermans.gif b/.config/hyde/themes/Gruvbox Retro/wallpapers/spidermans.gif new file mode 100644 index 0000000..10ea0be Binary files /dev/null and b/.config/hyde/themes/Gruvbox Retro/wallpapers/spidermans.gif differ diff --git a/.config/hypr/animations.conf b/.config/hypr/animations.conf index a2912a1..7203cb1 100644 --- a/.config/hypr/animations.conf +++ b/.config/hypr/animations.conf @@ -4,35 +4,36 @@ # See https://wiki.hyprland.org/Configuring/Animations/ -# animations { -# enabled = yes -# bezier = wind, 0.05, 0.9, 0.1, 1.05 -# bezier = winIn, 0.1, 1.1, 0.1, 1.1 -# bezier = winOut, 0.3, -0.3, 0, 1 -# bezier = liner, 1, 1, 1, 1 -# animation = windows, 1, 6, wind, slide -# animation = windowsIn, 1, 6, winIn, slide -# animation = windowsOut, 1, 5, winOut, slide -# animation = windowsMove, 1, 5, wind, slide -# animation = border, 1, 1, liner -# animation = borderangle, 1, 30, liner, loop -# animation = fade, 1, 10, default -# animation = workspaces, 1, 5, wind -# } - - animations { enabled = true - # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more - bezier = myBezier, 0.05, 0.9, 0.1, 1.05 - animation = windows, 1, 7, myBezier - animation = windowsOut, 1, 7, default, popin 80% - animation = border, 1, 10, default - animation = borderangle, 1, 8, default - animation = fade, 1, 7, default - animation = workspaces, 1, 6, default + bezier = wind, 0.05, 0.9, 0.1, 1.05 + bezier = winIn, 0.1, 1.1, 0.1, 1.1 + bezier = winOut, 0.3, -0.3, 0, 1 + bezier = liner, 1, 1, 1, 1 + + animation = windows, 1, 6, wind, slide + animation = windowsIn, 1, 6, winIn, slide + animation = windowsOut, 1, 5, winOut, slide + animation = windowsMove, 1, 5, wind, slide + animation = border, 1, 1, liner + animation = borderangle, 1, 30, liner, loop + animation = fade, 1, 10, default + animation = workspaces, 1, 5, wind } + +# animations { +# enabled = true +# # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more +# bezier = myBezier, 0.05, 0.9, 0.1, 1.05 +# animation = windows, 1, 7, myBezier +# animation = windowsOut, 1, 7, default, popin 80% +# animation = border, 1, 10, default +# animation = borderangle, 1, 8, default +# animation = fade, 1, 7, default +# animation = workspaces, 1, 6, default +# } + # # animations { # enabled = true @@ -69,3 +70,7 @@ animations { # # animation = specialWorkspace, 1, 3, md3_decel, slidefadevert 15% # animation = specialWorkspace, 1, 3, md3_decel, slidevert # } + +# animations { +# enabled = false +# } diff --git a/.config/hypr/custom/env.conf b/.config/hypr/custom/env.conf index 9f5c39f..9d5f8f3 100644 --- a/.config/hypr/custom/env.conf +++ b/.config/hypr/custom/env.conf @@ -1 +1,2 @@ env = GTK_IM_MODULE,fcitx + diff --git a/.config/hypr/custom/execs.conf b/.config/hypr/custom/execs.conf index b8acfe3..635005e 100644 --- a/.config/hypr/custom/execs.conf +++ b/.config/hypr/custom/execs.conf @@ -4,10 +4,15 @@ exec-once = corectrl exec-once = otd-daemon # run driver veikk exec-once = fcitx5 +exec-once = warp-taskbar +# exec-once = sway exec-once = waybar -c ~/.config/waybar/primary_screen/config.jsonc exec-once = waybar -c ~/.config/waybar/secondary_screen/config.jsonc +# exec-once = waybar exec = gsettings set org.gnome.desktop.interface icon-theme 'Nordzy' +exec = gsettings set org.gnome.desktop.interface cursor-theme 'Gruvbox' + exec = hyprctl setcursor Gruvbox-Retro 20 diff --git a/.config/hypr/custom/general.conf b/.config/hypr/custom/general.conf index 3362f82..15b9d81 100644 --- a/.config/hypr/custom/general.conf +++ b/.config/hypr/custom/general.conf @@ -16,13 +16,18 @@ workspace = 4, monitor:HDMI-A-1, workspace = 6, monitor:HDMI-A-1, workspace = 8, monitor:HDMI-A-1, workspace = 10, monitor:HDMI-A-1, +# +# decoration { blur { enabled = false } - drop_shadow = false + # drop_shadow = false + shadow { + enabled = false + } } input { @@ -30,7 +35,7 @@ input { kb_variant = ,qwerty # kb_options = grp:alt_shift_toggle kb_options = grp:win_space_toggle - repeat_delay = 155 + repeat_delay = 200 repeat_rate = 55 } @@ -55,16 +60,9 @@ master { new_on_top = true } -dwindle { - preserve_split = true # you probably want this - #no_gaps_when_only = true - - smart_resizing = false -} - misc { vrr = 0 - vfr = false + vfr = true disable_hyprland_logo = true disable_splash_rendering = true force_default_wallpaper = 0 @@ -73,28 +71,28 @@ misc { } plugin { - hyprbars { - # Honestly idk if it works like css, but well, why not - bar_text_font = VictorMono NF SemiBold Italic - bar_text_size = 18 - bar_height = 30 - bar_padding = 10 - bar_button_padding = 15 - bar_precedence_over_border = false - bar_part_of_window = false + # hyprbars { + # # Honestly idk if it works like css, but well, why not + # bar_text_font = VictorMono NF SemiBold Italic + # bar_text_size = 18 + # bar_height = 30 + # bar_padding = 10 + # bar_button_padding = 15 + # bar_precedence_over_border = github + # bar_part_of_window = false - bar_color = rgba(12131CFF) - col.text = rgba(E2E1EFFF) + # bar_color = rgba(12131CFF) + # col.text = rgba(E2E1EFFF) - # example buttons (R -> L) - # hyprbars-button = color, size, on-click - hyprbars-button = rgba(12131CFF), 25, 󰖭, hyprctl dispatch killactive - hyprbars-button = rgba(12131CFF), 25,  , hyprctl - hyprbars-button = rgba(12131CFF), 25, , hyprctl - hyprbars-button = rgba(12131CFF), 25, , hyprctl - hyprbars-button = rgba(12131CFF), 25, , hyprctl - hyprbars-button = rgba(12131CFF), 25, , hyprctl - hyprbars-button = rgba(12131CFF), 25, , hyprctl - hyprbars-button = rgba(12131CFF), 25, , hyprctl - } + # # example buttons (R -> L) + # # hyprbars-button = color, size, on-click + # hyprbars-button = rgba(12131CFF), 25, 󰖭, hyprctl dispatch killactive + # hyprbars-button = rgba(12131CFF), 25,  , hyprctl + # hyprbars-button = rgba(12131CFF), 25, , hyprctl + # hyprbars-button = rgba(12131CFF), 25, , hyprctl + # hyprbars-button = rgba(12131CFF), 25, , hyprctl + # hyprbars-button = rgba(12131CFF), 25, , hyprctl + # hyprbars-button = rgba(12131CFF), 25, , hyprctl + # hyprbars-button = rgba(12131CFF), 25, , hyprctl + # } } diff --git a/.config/hypr/custom/keybinding.conf b/.config/hypr/custom/keybinding.conf index b08bfe1..c4a2395 100644 --- a/.config/hypr/custom/keybinding.conf +++ b/.config/hypr/custom/keybinding.conf @@ -18,6 +18,7 @@ unbind = Super, K unbind = Super, L unbind = Ctrl+Alt, mouse_down unbind = Ctrl+Alt, mouse_up +unbind = SUPER, Tab unbind = SUPER, mouse:273 @@ -38,9 +39,9 @@ bind = Ctrl+Alt, J, movewindow, d # [hidden] ## switch workspace bind = Shift+Alt, L, exec, source /home/duckq1u/.config/hypr/scripts/workspaceV2inscrease.sh bind = Shift+Alt, H, exec, source /home/duckq1u/.config/hypr/scripts/workspaceV2descrease.sh + bindt = Ctrl+Alt, mouse:272, exec, source /home/duckq1u/.config/hypr/scripts/workspaceV2descrease.sh bindt = Ctrl+Alt, mouse:273, exec, source /home/duckq1u/.config/hypr/scripts/workspaceV2inscrease.sh - bindm = ALT, mouse:272, movewindow # [hidden] bind = Alt, Q, killactive, @@ -51,11 +52,16 @@ bind = Alt, E, exec, nautilus --new-window # Launch Nautilus (file manager) bind = Alt, T, exec, kitty bind = Alt, B, exec, thorium-browser --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime # phai them cai nay vao no moi chay tren wayland chuan xac duoc bind = Shift+Alt, B, exec, brave -bind = Alt, O, exec, obsidian -bind = Alt, V, exec, vesktop --no-sandbox --ozone-platform=wayland --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations %U +bind = Alt, O, exec, obsidian --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime --wayland-text-input-v3 +bind = Alt, V, exec, vesktop --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime --wayland-text-input-v3 + +bind = Alt, N, exec, swaync-client -t +bind = Alt+Shift, N, exec, dunstctl close-all -bind = SUPER, SUPER_L, exec, pkill -x rofi || $scrPath/rofilaunch.sh d # launch application launcher +bind = SUPER, SUPER_L, exec, pkill -x rofi || $scrPath/rofilaunch.sh w # launch application launcher +bind = SUPER, Tab, exec, pkill -x rofi || $scrPath/rofilaunch.sh d # launch window switcher + bind = SUPER, L, exec, swaylock # launch lock screen bind = Ctrl+SUPER, Ctrl+SUPER_L, exec, rofi diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf index 2802dc2..b5edf5c 100644 --- a/.config/hypr/hyprland.conf +++ b/.config/hypr/hyprland.conf @@ -33,11 +33,10 @@ exec-once = $scrPath/polkitkdeauth.sh # authentication dialogue for GUI apps exec-once = blueman-applet # systray app for Bluetooth exec-once = udiskie --no-automount --smart-tray # front-end that allows to manage removable media exec-once = nm-applet --indicator # systray app for Network/Wifi -exec-once = dunst # start notification demon +# exec-once = dunst # start notification demon exec-once = wl-paste --type text --watch cliphist store # clipboard store text data exec-once = wl-paste --type image --watch cliphist store # clipboard store image data exec-once = $scrPath/swwwallpaper.sh # start wallpaper daemon -exec-once = $scrPath/batterynotify.sh # battery nnotification # █▀▀ █▄░█ █░█ diff --git a/.config/hypr/keybindings.conf b/.config/hypr/keybindings.conf index fba03bf..3b96a41 100644 --- a/.config/hypr/keybindings.conf +++ b/.config/hypr/keybindings.conf @@ -44,10 +44,17 @@ bind = $mainMod+Shift, E, exec, pkill -x rofi || $scrPath/rofilaunch.sh f # laun # bindel = , F11, exec, $scrPath/volumecontrol.sh -o d # decrease volume # bindel = , F12, exec, $scrPath/volumecontrol.sh -o i # increase volume bindl = , XF86AudioMute, exec, $scrPath/volumecontrol.sh -o m # toggle audio mute -bindl = , XF86AudioMicMute, exec, $scrPath/volumecontrol.sh -i m # toggle microphone mute +bindl = SUPER, M, exec, $scrPath/volumecontrol.sh -i m # toggle microphone mute bindel = , XF86AudioLowerVolume, exec, $scrPath/volumecontrol.sh -o d # decrease volume bindel = , XF86AudioRaiseVolume, exec, $scrPath/volumecontrol.sh -o i # increase volume +# bindl = Alt ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle # [hidden] +# bindl = Super ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle # [hidden] +# bindl = ,XF86AudioMute, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0% # [hidden] +# bindl = Super+Shift,M, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0% # [hidden] +# bindle=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ # [hidden] +# bindle=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- # [hidden] + # Media control bindl = , XF86AudioPlay, exec, playerctl play-pause # toggle between media play and pause bindl = , XF86AudioPause, exec, playerctl play-pause # toggle between media play and pause @@ -115,17 +122,6 @@ binde = $mainMod+Shift, Left, resizeactive, -30 0 binde = $mainMod+Shift, Up, resizeactive, 0 -30 binde = $mainMod+Shift, Down, resizeactive, 0 30 -# Move focused window to a workspace -bind = $mainMod+Shift, 1, movetoworkspace, 1 -bind = $mainMod+Shift, 2, movetoworkspace, 2 -bind = $mainMod+Shift, 3, movetoworkspace, 3 -bind = $mainMod+Shift, 4, movetoworkspace, 4 -bind = $mainMod+Shift, 5, movetoworkspace, 5 -bind = $mainMod+Shift, 6, movetoworkspace, 6 -bind = $mainMod+Shift, 7, movetoworkspace, 7 -bind = $mainMod+Shift, 8, movetoworkspace, 8 -bind = $mainMod+Shift, 9, movetoworkspace, 9 -bind = $mainMod+Shift, 0, movetoworkspace, 10 # Move focused window to a relative workspace bind = $mainMod+Ctrl+Alt, Right, movetoworkspace, r+1 diff --git a/.config/hypr/scripts/focusStateToRight.sh b/.config/hypr/scripts/focusStateToRight.sh index f9ae2c6..9f95f65 100644 --- a/.config/hypr/scripts/focusStateToRight.sh +++ b/.config/hypr/scripts/focusStateToRight.sh @@ -7,7 +7,6 @@ window_info=$(hyprctl activewindow) window_state=$(echo "$window_info" | grep 'fullscreen:' | awk '{print $2}') - # NOTE: Di chuyển cửa sổ nếu vị trí X vượt qua ngưỡng if [ $window_state -eq 1 ]; then hyprctl dispatch focusmonitor 1 @@ -15,4 +14,5 @@ if [ $window_state -eq 1 ]; then fi hyprctl dispatch movefocus r + exit 0 diff --git a/.config/hypr/scripts/test.sh b/.config/hypr/scripts/test.sh deleted file mode 100644 index e69de29..0000000 diff --git a/.config/hypr/scripts/windowtoleft.sh b/.config/hypr/scripts/windowtoleft.sh index 36395b2..bb632ca 100644 --- a/.config/hypr/scripts/windowtoleft.sh +++ b/.config/hypr/scripts/windowtoleft.sh @@ -23,7 +23,6 @@ move(){ hyprctl --batch " dispatch movetoworkspace $((window_at_workspace-1)) ; - dispatch focusmonitor 0 ; dispatch workspace $((current_workspace-2)) ; dispatch focusmonitor 1 " diff --git a/.config/hypr/scripts/windowtoright.sh b/.config/hypr/scripts/windowtoright.sh index cd03e94..a908a89 100644 --- a/.config/hypr/scripts/windowtoright.sh +++ b/.config/hypr/scripts/windowtoright.sh @@ -15,14 +15,9 @@ window_width=$(echo "$window_info" | grep 'size:' | awk '{print $2}' | cut -d',' hyprctl dispatch fullscreenstate 0 # minimize trước khi di chuyển move(){ - # hyprctl dispatch movetoworkspace $((window_at_workspace+1)) \ - # && hyprctl dispatch focusmonitor 1 \ - # && hyprctl dispatch workspace $((current_workspace+2)) \ - # && hyprctl dispatch focusmonitor 0 hyprctl --batch " dispatch movetoworkspace $((window_at_workspace+1)) ; - dispatch focusmonitor 1 ; dispatch workspace $((current_workspace+2)) ; dispatch focusmonitor 0 " diff --git a/.config/hypr/scripts/workspaceV2descrease.sh b/.config/hypr/scripts/workspaceV2descrease.sh index 70ba792..21dcc81 100644 --- a/.config/hypr/scripts/workspaceV2descrease.sh +++ b/.config/hypr/scripts/workspaceV2descrease.sh @@ -1,6 +1,5 @@ #!/bin/bash # Extract workspace ID from the output of hyprctl activewindow -current_monitor=$(hyprctl activeworkspace | grep 'monitorID' | awk '{print $2}') current_workspace=$(hyprctl activeworkspace | grep 'workspace' | awk '{print $3}') # Determine the second workspace based on whether the current workspace is even or odd @@ -10,14 +9,8 @@ else second_workspace=$((current_workspace + 1)) fi -# Assign primary and secondary monitor workspaces based on the current workspace -if [ $((current_workspace % 2)) -eq 0 ]; then - primary_monitor_workspace=$((second_workspace - 2)) # left - secondary_monitor_workspace=$((current_workspace - 2)) # right -else - primary_monitor_workspace=$((current_workspace - 2)) - secondary_monitor_workspace=$((second_workspace - 2)) -fi +primary_monitor_workspace=$((current_workspace - 2)) +secondary_monitor_workspace=$((second_workspace - 2)) # Check if primary_monitor_workspace is less than or equal to 0 # or if secondary_monitor_workspace is greater than or equal to 11 @@ -25,18 +18,8 @@ if [ "$primary_monitor_workspace" -le 0 ] || [ "$secondary_monitor_workspace" -g exit 1 fi -# hyprctl dispatch focusmonitor 0 \ -# &&hyprctl dispatch workspace $primary_monitor_workspace \ -# &&hyprctl dispatch focusmonitor 1 \ -# &&hyprctl dispatch workspace $secondary_monitor_workspace \ -# &&hyprctl dispatch focusmonitor $current_monitor - hyprctl --batch " - dispatch focusmonitor 0 ; - dispatch workspace $primary_monitor_workspace ; - dispatch dispatch focusmonitor 1 ; dispatch workspace $secondary_monitor_workspace ; - dispatch focusmonitor $current_monitor + dispatch workspace $primary_monitor_workspace ; " - exit 0 diff --git a/.config/hypr/scripts/workspaceV2inscrease.sh b/.config/hypr/scripts/workspaceV2inscrease.sh index b507d38..bca3141 100644 --- a/.config/hypr/scripts/workspaceV2inscrease.sh +++ b/.config/hypr/scripts/workspaceV2inscrease.sh @@ -5,20 +5,17 @@ current_monitor=$(hyprctl activeworkspace | grep 'monitorID' | awk '{print $2}') current_workspace=$(hyprctl activeworkspace | grep 'workspace' | awk '{print $3}') # Determine the second workspace based on whether the current workspace is even or odd +echo $current_workspace +echo $current_monitor + if [ $((current_workspace % 2)) -eq 0 ]; then second_workspace=$((current_workspace - 1)) else second_workspace=$((current_workspace + 1)) fi -# Assign primary and secondary monitor workspaces based on the current workspace -if [ $((current_workspace % 2)) -eq 0 ]; then - primary_monitor_workspace=$((second_workspace + 2)) # left - secondary_monitor_workspace=$((current_workspace + 2)) # right -else - primary_monitor_workspace=$((current_workspace + 2)) - secondary_monitor_workspace=$((second_workspace + 2)) -fi +primary_monitor_workspace=$((current_workspace + 2)) # 1 + 2 =3 +secondary_monitor_workspace=$((second_workspace + 2)) # 2 + 2 =4 # Check if primary_monitor_workspace is less than or equal to 0 # or if secondary_monitor_workspace is greater than or equal to 11 @@ -26,18 +23,9 @@ if [ "$primary_monitor_workspace" -le 0 ] || [ "$secondary_monitor_workspace" -g exit 1 fi -# hyprctl dispatch focusmonitor 0 \ -# &&hyprctl dispatch workspace $primary_monitor_workspace \ -# &&hyprctl dispatch focusmonitor 1 \ -# &&hyprctl dispatch workspace $secondary_monitor_workspace \ -# &&hyprctl dispatch focusmonitor $current_monitor + hyprctl --batch " - dispatch focusmonitor 0 ; - dispatch workspace $primary_monitor_workspace ; - dispatch dispatch focusmonitor 1 ; dispatch workspace $secondary_monitor_workspace ; - dispatch focusmonitor $current_monitor + dispatch workspace $primary_monitor_workspace ; " - -exit 0 diff --git a/.config/hypr/themes/theme.conf b/.config/hypr/themes/theme.conf index 427f59f..33856cf 100644 --- a/.config/hypr/themes/theme.conf +++ b/.config/hypr/themes/theme.conf @@ -32,16 +32,19 @@ group { decoration { rounding = 3 - drop_shadow = false + # drop_shadow = false + shadow { + enabled = false + } blur { - enabled = yes - size = 4 - passes = 2 - new_optimizations = on - ignore_opacity = on - xray = false + enabled = false + # size = 4 + # passes = 2 + # new_optimizations = on + # ignore_opacity = on + # xray = false } } -layerrule = blur,waybar +# layerrule = blur,waybar diff --git a/.config/hyprV1/env.conf b/.config/hyprV1/env.conf deleted file mode 100644 index 3a1d830..0000000 --- a/.config/hyprV1/env.conf +++ /dev/null @@ -1,4 +0,0 @@ -# You can put extra environment variables here -# https://wiki.hyprland.org/Configuring/Environment-variables/ -# - diff --git a/.config/hyprV1/execs.conf b/.config/hyprV1/execs.conf deleted file mode 100644 index 31d2328..0000000 --- a/.config/hyprV1/execs.conf +++ /dev/null @@ -1,4 +0,0 @@ -# You can make apps auto-start here -# Relevant Hyprland wiki section: https://wiki.hyprland.org/Configuring/Keywords/#executing -# -exec-once = corectrl diff --git a/.config/hyprV1/general.conf b/.config/hyprV1/general.conf deleted file mode 100644 index 074fea1..0000000 --- a/.config/hyprV1/general.conf +++ /dev/null @@ -1,77 +0,0 @@ -# Put general config stuff here -# Here's a list of every variable: https://wiki.hyprland.org/Configuring/Variables/ - -monitor = DP-1, highres, 0x0, 1 -monitor = HDMI-A-1, highres, 1920x0, 1 - -decoration { - blur { - enabled = false - } - drop_shadow = false -} - -input { - kb_layout = us - kb_variant = ,qwerty - # kb_options = grp:alt_shift_toggle - kb_options = grp:win_space_toggle - repeat_delay = 155 - repeat_rate = 55 -} - - - -general { - # Gaps and border - gaps_in = 4 - gaps_out = 4 - border_size = 6 - - # Fallback colors - col.active_border = rgba(0DB7D4FF) rgba(7AA2F7FF) rgba(9778D0FF) rgb(24C6DC) rgb(93EDC7) 45deg - col.inactive_border = rgba(12131CFF) - - # Functionality - # resize_on_border = true - layout = master -} - -dwindle { - preserve_split = true # you probably want this - #no_gaps_when_only = true - - smart_resizing = false -} - -misc { - background_color = rgba(12131CFF) - vfr = true -} - -plugin { - hyprbars { - # Honestly idk if it works like css, but well, why not - bar_text_font = VictorMono NF SemiBold Italic - bar_text_size = 18 - bar_height = 30 - bar_padding = 10 - bar_button_padding = 15 - bar_precedence_over_border = false - bar_part_of_window = false - - bar_color = rgba(12131CFF) - col.text = rgba(E2E1EFFF) - - # example buttons (R -> L) - # hyprbars-button = color, size, on-click - hyprbars-button = rgba(12131CFF), 25, 󰖭, hyprctl dispatch killactive - hyprbars-button = rgba(12131CFF), 25,  , hyprctl - hyprbars-button = rgba(12131CFF), 25, , hyprctl - hyprbars-button = rgba(12131CFF), 25, , hyprctl - hyprbars-button = rgba(12131CFF), 25, , hyprctl - hyprbars-button = rgba(12131CFF), 25, , hyprctl - hyprbars-button = rgba(12131CFF), 25, , hyprctl - hyprbars-button = rgba(12131CFF), 25, , hyprctl - } -} diff --git a/.config/hyprV1/keybinds.conf b/.config/hyprV1/keybinds.conf deleted file mode 100644 index 420c373..0000000 --- a/.config/hyprV1/keybinds.conf +++ /dev/null @@ -1,66 +0,0 @@ -# You can put your preferred keybinds here -# https://wiki.hyprland.org/Configuring/Binds/ - -unbind = Super, W -unbind = Super, T -unbind = Alt, E - -# disbale side -unbind = Super, B -unbind = Super, M -unbind = Super, N -unbind = Super, E - -# monve workspace -unbind = Super, H -unbind = Super, J -unbind = Super, K -unbind = Super, L - - -# move windown -bind = Alt, H, fullscreenstate, 0 # [hidden] -bind = Alt, H, movefocus, l # [hidden] - -bind = Alt, L, fullscreenstate, 0 # [hidden] -bind = Alt, L, movefocus, r # [hidden] - -bind = Alt, K, fullscreenstate, 0 # [hidden] -bind = Alt, K, movefocus, u # [hidden] - -bind = Alt, J, fullscreenstate, 0 # [hidden] -bind = Alt, J, movefocus, d # [hidden] - -##! Window arrangement -#/# bind = Super+Shift, ←/↑/→/↓,, # Window: move in direction -bind = Ctrl+Alt, H, fullscreenstate, 0 # [hidden] -bind = Ctrl+Alt, H, movewindow, l # [hidden] - -bind = Ctrl+Alt, L, fullscreenstate, 0 # [hidden] -bind = Ctrl+Alt, L, movewindow, r # [hidden] - -bind = Ctrl+Alt, K, movewindow, u # [hidden] -bind = Ctrl+Alt, J, movewindow, d # [hidden] -bind = Ctrl+Alt, M, exec, pavucontrol # Launch pavucontrol (volume mixer) - -bind = Alt, Q, killactive, - -bind = Alt, F, fullscreen, 1 -bind = Alt, R, exec, killall ags ydotool; ags & # Restart widgets -bind = Alt, E, exec, nautilus --new-window # Launch Nautilus (file manager) -bind = Alt, M, exec, ags run-js 'openMusicControls.value = (!mpris.getPlayer() ? false : !openMusicControls.value);' # Toggle music controls -bind = Alt, N, exec, ags -t 'sideright' # Toggle right sidebar - -bind = Alt, T, exec, kitty -bind = Alt, B, exec, brave -bind = Alt, O, exec, obsidian --no-sandbox --ozone-platform=wayland --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations %U -bind = Alt, V, exec, vesktop --no-sandbox --ozone-platform=wayland --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations %U - -# bind = Ctrl+Super+Shift, Right, movetoworkspace, +1 # [hidden] -bind = Shift+Alt, L, focusmonitor, 1 -bind = Shift+Alt, H, focusmonitor, 0 - -bindl= Super, H, exec, playerctl previous # Previous track -bindl= Super, L, exec, playerctl play-pause # Play/pause media -bindl= Super, K, exec, playerctl next || playerctl position `bc <<< "100 * $(playerctl metadata mpris:length) / 1000000 / 100"` # Next track - diff --git a/.config/hyprV1/rules.conf b/.config/hyprV1/rules.conf deleted file mode 100644 index ef54f03..0000000 --- a/.config/hyprV1/rules.conf +++ /dev/null @@ -1,9 +0,0 @@ -# You can put custom rules here -# Window/layer rules: https://wiki.hyprland.org/Configuring/Window-Rules/ -# Workspace rules: https://wiki.hyprland.org/Configuring/Workspace-Rules/ -# -windowrulev2 = bordercolor rgb(c21500) rgb(d53369) rgb(F2994A) rgb(F2C94C) 45deg,fullscreen:1 -# windowrulev2 = nofocus, ^(Ibus-ui-gtk3)$ -# windowrulev2 = nofocus, ^(Ibus-ui-gtk5)$ -# windowrulev2 = nofocus, ^(Ibus-ui-gtk4)$ -# windowrulev2=nofocus,ibus-ui diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf index 2adb008..36c033a 100644 --- a/.config/kitty/kitty.conf +++ b/.config/kitty/kitty.conf @@ -6,7 +6,7 @@ font_family JetBrainsMonoNL NF SemiBold italic_font VictorMono NF SemiBold Italic # bold_italic_font FiraCode Italic -font_size 14 +font_size 15 # background_image ~/Pictures/ImgsDownloadsFromBr/BgKittyGif/convert.png # background_image_layout cscaled @@ -15,7 +15,7 @@ background_opacity 0.9 input_delay 0 repaint_delay 0 -sync_to_monitor yes +sync_to_monitor no wayland_enable_ime no # cursor lirke neovide @@ -39,7 +39,6 @@ map cmd+c copy_to_clipboard map cmd+v paste_from_clipboard map ctrl+shift+s paste_from_selection - background #24273a foreground #ffffff cursor #bbbbbb diff --git a/.config/lazygit/config.yml b/.config/lazygit/config.yml new file mode 100644 index 0000000..e8ae5fc --- /dev/null +++ b/.config/lazygit/config.yml @@ -0,0 +1,9 @@ +gui: + showIcons: true + screenMode: half + +git: + paging: + colorArg: always + pager: delta --dark --paging=never --line-numbers --hyperlinks --hyperlinks-file-link-format="lazygit-edit://{path}:{line}" + diff --git a/.config/nvim/.gitignore b/.config/nvim/.gitignore deleted file mode 100644 index 6fd0a37..0000000 --- a/.config/nvim/.gitignore +++ /dev/null @@ -1,41 +0,0 @@ -# Compiled Lua sources -luac.out - -# luarocks build files -*.src.rock -*.zip -*.tar.gz - -# Object files -*.o -*.os -*.ko -*.obj -*.elf - -# Precompiled Headers -*.gch -*.pch - -# Libraries -*.lib -*.a -*.la -*.lo -*.def -*.exp - -# Shared objects (inc. Windows DLLs) -*.dll -*.so -*.so.* -*.dylib - -# Executables -*.exe -*.out -*.app -*.i*86 -*.x86_64 -*.hex - diff --git a/.config/nvim/.neoconf.json b/.config/nvim/.neoconf.json deleted file mode 100644 index 4da33ca..0000000 --- a/.config/nvim/.neoconf.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "neodev": { - "library": { - "enabled": true, - "plugins": true - } - }, - "neoconf": { - "plugins": { - "lua_ls": { - "enabled": true - } - } - }, - "lspconfig": { - "lua_ls": { - "Lua.format.enable": false - } - } -} diff --git a/.config/nvim/.stylua.toml b/.config/nvim/.stylua.toml deleted file mode 100644 index bfcffff..0000000 --- a/.config/nvim/.stylua.toml +++ /dev/null @@ -1,7 +0,0 @@ -column_width = 120 -line_endings = "Unix" -indent_type = "Spaces" -indent_width = 2 -quote_style = "AutoPreferDouble" -call_parentheses = "None" -collapse_simple_statement = "Always" diff --git a/.config/nvim/README.md b/.config/nvim/README.md deleted file mode 100644 index 8ae2a7f..0000000 --- a/.config/nvim/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# nvim-config - - ```powershell - vi" hightlight inline on """ - ``` - -My personal neovim config - -## Installation - -- Windows - - ```powershell - Rename-Item -Path $env:LOCALAPPDATA\nvim -NewName $env:LOCALAPPDATA\nvim.bak - Rename-Item -Path $env:LOCALAPPDATA\nvim-data -NewName $env:LOCALAPPDATA\nvim-data.bak - git clone https://github.com/Penguin-jpg/nvim-config $env:LOCALAPPDATA\nvim - nvim - ``` - -- Unix - - ```shell - mv ~/.config/nvim ~/.config/nvim.bak - mv ~/.local/share/nvim ~/.local/share/nvim.bak - git clone https://github.com/Penguin-jpg/nvim-config ~/.config/nvim - nvim - ``` - -## Dependency - -- Python - - ```shell - sudo apt-get install python3-dev python3-pip python3-venv - pip install pynvim - ``` - -- Node - - ```shell - npm install -g neovim - ``` - -- Cargo - ```shell - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - rustup update - cargo install --locked yazi-fm yazi-cli - ``` -- Optional - - [ripgrep (for live grep)](https://github.com/BurntSushi/ripgrep) - - [wezterm](https://wezfurlong.org/wezterm/index.html) diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua deleted file mode 100644 index 425b155..0000000 --- a/.config/nvim/init.lua +++ /dev/null @@ -1,19 +0,0 @@ --- This file simply bootstraps the installation of Lazy.nvim and then calls other files for execution --- This file doesn't necessarily need to be touched, BE CAUTIOUS editing this file and proceed at your own risk. -local lazypath = vim.env.LAZY or vim.fn.stdpath "data" .. "/lazy/lazy.nvim" -if not (vim.env.LAZY or (vim.uv or vim.loop).fs_stat(lazypath)) then - -- stylua: ignore - vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath }) -end -vim.opt.rtp:prepend(lazypath) - --- validate that lazy is available -if not pcall(require, "lazy") then - -- stylua: ignore - vim.api.nvim_echo({ { ("Unable to load lazy from: %s\n"):format(lazypath), "ErrorMsg" }, { "Press any key to exit...", "MoreMs" } }, true, {}) - vim.fn.getchar() - vim.cmd.quit() -end - -require "lazy_setup" -require "polish" diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json deleted file mode 100644 index 4924839..0000000 --- a/.config/nvim/lazy-lock.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "AstroNvim": { "branch": "main", "commit": "c82ef216d0776b19cd7229fb916c4b30fbe3484c" }, - "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, - "LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" }, - "aerial.nvim": { "branch": "master", "commit": "9c29a1a66eb31384888e413e510ba72496e06770" }, - "alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" }, - "astrocommunity": { "branch": "main", "commit": "bb7988ac0efe0c17936c350c6da19051765f0e71" }, - "astrocore": { "branch": "main", "commit": "0fcaac66d115948605c14eaf45a41d3923eaafeb" }, - "astrolsp": { "branch": "main", "commit": "2f6b0a4059775a1dac011d2944dd41fd4a8fe7a8" }, - "astrotheme": { "branch": "main", "commit": "41b7d8430a55fd771e41bd763af4c3fd1c2fc0b5" }, - "astroui": { "branch": "main", "commit": "58c4130bd15c28827eab19dcc20fb9483bf5cad8" }, - "auto-save.nvim": { "branch": "main", "commit": "5fbcaac0a2698c87a9a1bd2083cb6949505cca12" }, - "bamboo.nvim": { "branch": "master", "commit": "d38c50257d9fb16b17050569b29d777b1f2503ee" }, - "better-escape.nvim": { "branch": "master", "commit": "199dcc2643dec5d8dbdab4ec672cf405224dcb3b" }, - "catppuccin": { "branch": "main", "commit": "0b5df9c9e641b1212b21a0762ccad4434fd41322" }, - "clangd_extensions.nvim": { "branch": "main", "commit": "8f7b72100883e0e34400d9518d40a03f21e4d0a6" }, - "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-dap": { "branch": "master", "commit": "ea92773e84c0ad3288c3bc5e452ac91559669087" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, - "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, - "code_runner.nvim": { "branch": "main", "commit": "dcedccbf969a0f3bc00db446172b4966e83101dd" }, - "cyberdream.nvim": { "branch": "main", "commit": "cd3c2e7955034a5bec0e1beb9d7cb80c639ef5d5" }, - "dressing.nvim": { "branch": "master", "commit": "43b8f74e0b1e3f41e51f640f8efa3bcd401cea0d" }, - "duplicate.nvim": { "branch": "main", "commit": "ab057af7872c44e6fbd48df9b03983c8e67c50a7" }, - "flash.nvim": { "branch": "main", "commit": "34c7be146a91fec3555c33fe89c7d643f6ef5cf1" }, - "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, - "gitsigns.nvim": { "branch": "main", "commit": "0b04035bb7b3c83e999b9676e2fb46fd0aa9f910" }, - "grug-far.nvim": { "branch": "main", "commit": "190c03d54e8976491e6e49acb97087bf4182b079" }, - "guess-indent.nvim": { "branch": "main", "commit": "6cd61f7a600bb756e558627cd2e740302c58e32d" }, - "heirline.nvim": { "branch": "master", "commit": "cc359b628266cb9a84b2d71c883f2b99e16473a0" }, - "indent-blankline.nvim": { "branch": "master", "commit": "3fe94b8034dd5241cb882bb73847303b58857ecf" }, - "kanagawa.nvim": { "branch": "master", "commit": "e5f7b8a804360f0a48e40d0083a97193ee4fcc87" }, - "lazy.nvim": { "branch": "main", "commit": "7967abe55752aa90532e6bb4bd4663fe27a264cb" }, - "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, - "lsp_signature.nvim": { "branch": "master", "commit": "a38da0a61c172bb59e34befc12efe48359884793" }, - "lspkind.nvim": { "branch": "master", "commit": "a700f1436d4a938b1a1a93c9962dc796afbaef4d" }, - "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" }, - "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, - "markview.nvim": { "branch": "main", "commit": "72cd34279e94ee96ee33bdf30a87b00e6d45319d" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "43894adcf10bb1190c2184bd7c1750e8ea2b3dce" }, - "mason-null-ls.nvim": { "branch": "main", "commit": "2b8433f76598397fcc97318d410e0c4f7a4bea6a" }, - "mason-nvim-dap.nvim": { "branch": "main", "commit": "8b9363d83b5d779813cdd2819b8308651cec2a09" }, - "mason.nvim": { "branch": "main", "commit": "c43eeb5614a09dc17c03a7fb49de2e05de203924" }, - "mini.bufremove": { "branch": "main", "commit": "1ee294a97e091d3cf967974df622c0d887890dc2" }, - "mini.icons": { "branch": "main", "commit": "54686be7d58807906cb2c8c2216e0bf9c044f19a" }, - "mini.indentscope": { "branch": "main", "commit": "da9af64649e114aa79480c238fd23f6524bc0903" }, - "mini.move": { "branch": "main", "commit": "4caa1c212f5ca3d1633d21cfb184808090ed74b1" }, - "mini.surround": { "branch": "main", "commit": "48a9795c9d352c771e1ab5dedab6063c0a2df037" }, - "monokai-pro.nvim": { "branch": "master", "commit": "4f4133601296881bb2197800bd68d2bba9eaadb9" }, - "multiple-cursors.nvim": { "branch": "main", "commit": "2f5e786c43aa9c0fc34b295cfcc9bfbacef8e926" }, - "neo-tree.nvim": { "branch": "main", "commit": "a77af2e764c5ed4038d27d1c463fa49cd4794e07" }, - "neoconf.nvim": { "branch": "main", "commit": "24db302fe23c4c07233e4b9d79ebe1dd2d3c975b" }, - "noice.nvim": { "branch": "main", "commit": "c6f6fb178ebe9b4fd90383de743c3399f8c3a37c" }, - "none-ls.nvim": { "branch": "main", "commit": "1f2bf17eddfdd45aed254b6922c6c68b933dba9e" }, - "nui.nvim": { "branch": "main", "commit": "a0fd35fcbb4cb479366f1dc5f20145fd718a3733" }, - "nvim-autopairs": { "branch": "master", "commit": "78a4507bb9ffc9b00f11ae0ac48243d00cb9194d" }, - "nvim-cmp": { "branch": "main", "commit": "be7bd4c5f860c79da97af3a26d489af50babfd4b" }, - "nvim-dap": { "branch": "master", "commit": "cc92b054720a96170eca6bd9bdedd43d2b0a7a8a" }, - "nvim-dap-ui": { "branch": "master", "commit": "ffa89839f97bad360e78428d5c740fdad9a0ff02" }, - "nvim-dap-virtual-text": { "branch": "master", "commit": "76d80c3d171224315b61c006502a1e30c213a9ab" }, - "nvim-highlight-colors": { "branch": "main", "commit": "e967e2ba13fd4ca731b41d0e5cc1ac2edcd6e25e" }, - "nvim-lspconfig": { "branch": "master", "commit": "dafd61d6533bd90ecf6e2a3a972298fdddc74d82" }, - "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" }, - "nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" }, - "nvim-spider": { "branch": "main", "commit": "77a74131775f7d427f148c65a6119966a0b3da25" }, - "nvim-treesitter": { "branch": "master", "commit": "7930b5f983c37bb07c9af27274334a7adcb3e5af" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "ad8f0a472148c3e0ae9851e26a722ee4e29b1595" }, - "nvim-ts-autotag": { "branch": "main", "commit": "e239a560f338be31337e7abc3ee42515daf23f5e" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "9c74db656c3d0b1c4392fc89a016b1910539e7c0" }, - "nvim-ufo": { "branch": "main", "commit": "a5390706f510d39951dd581f6d2a972741b3fa26" }, - "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, - "promise-async": { "branch": "main", "commit": "38a4575da9497326badd3995e768b4ccf0bb153e" }, - "rainbow-delimiters.nvim": { "branch": "master", "commit": "d803ba7668ba390aa4cfd3580183c982cac36fd8" }, - "resession.nvim": { "branch": "master", "commit": "cc819b0489938d03e4f3532a583354f0287c015b" }, - "smart-splits.nvim": { "branch": "master", "commit": "00fba7a0e912a8d82da91a3b6b11d641fa500bd8" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, - "telescope.nvim": { "branch": "master", "commit": "85922dde3767e01d42a08e750a773effbffaea3e" }, - "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, - "transparent.nvim": { "branch": "main", "commit": "8a2749a2fa74f97fe6557f61b89ac7fd873f3c21" }, - "treesj": { "branch": "main", "commit": "03415ac60791d48e120a80d37e080744faf3ac15" }, - "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, - "ultimate-autopair.nvim": { "branch": "v0.6", "commit": "9e3209190c22953566ae4e6436ad2b4ff4dabb95" }, - "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, - "vim-visual-multi": { "branch": "master", "commit": "a6975e7c1ee157615bbc80fc25e4392f71c344d4" }, - "which-key.nvim": { "branch": "main", "commit": "9b365a6428a9633e3eeb34dbef1b791511c54f70" } -} diff --git a/.config/nvim/lua/community.lua b/.config/nvim/lua/community.lua deleted file mode 100644 index cc2cbcd..0000000 --- a/.config/nvim/lua/community.lua +++ /dev/null @@ -1,14 +0,0 @@ --- AstroCommunity: import any community modules here --- We import this file in `lazy_setup.lua` before the `plugins/` folder. --- This guarantees that the specs are processed before any user plugins. - ----@type LazySpec -return { - "AstroNvim/astrocommunity", - { import = "astrocommunity.pack.lua" }, - { import = "astrocommunity.pack.json" }, - -- { import = "astrocommunity.pack.markdown" }, - { import = "astrocommunity.color.nvim-highlight-colors" }, - { import = "astrocommunity.diagnostics.trouble-nvim" }, - { import = "astrocommunity.neovim-lua-development.lazydev-nvim" }, -} diff --git a/.config/nvim/lua/core/autocmds.lua b/.config/nvim/lua/core/autocmds.lua deleted file mode 100644 index e54106c..0000000 --- a/.config/nvim/lua/core/autocmds.lua +++ /dev/null @@ -1,44 +0,0 @@ --- Some commands that I want to execute in specific timing -vim.api.nvim_create_augroup("disable_comment_newline", { clear = true }) -vim.api.nvim_create_augroup("auto_wrap", { clear = true }) -vim.api.nvim_create_augroup("disable_suspend_with_c_z", { clear = true }) -vim.api.nvim_create_augroup("clear_last_search", { clear = true }) - --- NOTE: CursorLineNr setting -vim.api.nvim_set_hl(0, "CursorLineNr", { fg = "#FFD700", bg = "none", bold = true }) --- NOTE: visual line colors -vim.api.nvim_set_hl(0, "Visual", { fg = "#000000", bg = "#FFFFFF", bold = true }) - --- NOTE: Set colors for hightlights for similar words --- vim.api.nvim_set_hl(0, "LspReferenceRead", { fg = "#FF0000" }) --- vim.api.nvim_set_hl(0, "LspReferenceWrite", { fg = "#FF0000" }) --- vim.api.nvim_set_hl(0, "LspReferenceText", { fg = "#FF0000" }) - -vim.api.nvim_create_autocmd("BufEnter", { - desc = "Disable auto insert comment newline", - group = "disable_comment_newline", - command = "set formatoptions-=cro", -}) - -vim.api.nvim_create_autocmd("FileType", { - desc = "Enable wrap and spell for text like documents", - group = "auto_wrap", - pattern = { "gitcommit", "markdown", "text", "plaintext" }, - callback = function() - vim.opt_local.wrap = true - vim.opt_local.spell = true - end, -}) - -vim.api.nvim_create_autocmd("BufEnter", { - desc = "Remap to nothing so that it doesn't suspend terminal", - group = "disable_suspend_with_c_z", - command = "nnoremap ", -}) - -vim.api.nvim_create_autocmd("BufWinEnter", { - desc = "Clear last search pattern", - group = "clear_last_search", - pattern = "*", - command = "let @/ = ''", -}) diff --git a/.config/nvim/lua/core/mappings.lua b/.config/nvim/lua/core/mappings.lua deleted file mode 100644 index 8b58b65..0000000 --- a/.config/nvim/lua/core/mappings.lua +++ /dev/null @@ -1,60 +0,0 @@ --- Mapping data with "desc" stored directly by vim.keymap.set(). --- --- Please use this mappings table to set keyboard mapping since this is the --- lower level configuration and more robust one. (which-key will --- automatically pick-up stored data by this setting.) - -return function() - local mappings = require("astrocore").empty_map_table() - - ------------------------------------------- - ------- Disable default mappings ---------- - ------------------------------------------- - mappings.n[""] = false - mappings.n[""] = false - mappings.n[""] = false - mappings.n[""] = false - mappings.n[""] = false - mappings.n[""] = false - mappings.n[""] = false - mappings.n[""] = false - - ------------------------------------------- - ----------- Utility functions ------------- - ------------------------------------------- - mappings.n[""] = { "u", desc = "Undo" } - -- mappings.n[""] = { "u", desc = "Undo" } - mappings.n["K"] = { function() vim.lsp.buf.hover() end, desc = "Hover symbol details"} - - mappings.i[""] = { "u", desc = "Undo" } - mappings.i[""] = { "dw", desc = "Delete a word backward" } - mappings.i[""] = { "w!", desc = "Save file" } - mappings.i["jj"] = { "", desc = "Normal mode" } - - mappings.i[""] = { "", desc = "Unindent line" } - mappings.v[""] = { ">gv", desc = "Indent line" } - mappings.v[""] = { ""] = { "ggVG", desc = "Select all lines" } - - return mappings -end diff --git a/.config/nvim/lua/core/options.lua b/.config/nvim/lua/core/options.lua deleted file mode 100644 index 90df014..0000000 --- a/.config/nvim/lua/core/options.lua +++ /dev/null @@ -1,33 +0,0 @@ -return { - -- vim.opt. - opt = { - number = true, -- show line number - relativenumber = true, -- show relative line number - spell = false, -- disable spell check - wrap = false, -- disable auto wrap lines - signcolumn = "yes", -- show changes of file - foldcolumn = "1", -- show foldcolumn - foldenable = true, -- enable fold for nvim-ufo - foldlevel = 99, -- set high foldlevel for nvim-ufo - foldlevelstart = 99, -- start with all code unfolded - guicursor = "n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20", -- default cursor setting - clipboard = "unnamedplus", -- enable system clipboard - termguicolors = true, -- true color support - mouse = "a", -- enable mouse - mousemoveevent = true, -- enable mousemove event - laststatus = 3, -- only show one statusline - swapfile = false, -- don't use swapfile - shiftwidth = 2, -- number of space inserted for indentation; when zero the 'tabstop' value will be used - tabstop = 2, -- set the number of space in a tab to 4 - softtabstop = 2, -- can be differnt from tabstop - showtabline = 0, -- always show tabline - expandtab = true, -- use spaces instead of tab - undofile = true, -- enable persistent undo - }, - -- vim.g. - g = { - -- configure global vim variables (vim.g) - -- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup` - -- This can be found in the `lua/lazy_setup.lua` file - }, -} diff --git a/.config/nvim/lua/lazy_setup.lua b/.config/nvim/lua/lazy_setup.lua deleted file mode 100644 index db9d8bd..0000000 --- a/.config/nvim/lua/lazy_setup.lua +++ /dev/null @@ -1,43 +0,0 @@ -require("lazy").setup({ - - { - "AstroNvim/AstroNvim", - version = "^4", -- Remove version tracking to elect for nighly AstroNvim - import = "astronvim.plugins", - opts = { -- AstroNvim options must be set here with the `import` key - mapleader = " ", -- This ensures the leader key must be configured before Lazy is set up - maplocalleader = ",", -- This ensures the localleader key must be configured before Lazy is set up - icons_enabled = true, -- Set to false to disable icons (if no Nerd Font is available) - pin_plugins = nil, -- Default will pin plugins when tracking `version` of AstroNvim, set to true/false to override - }, - }, - { import = "community" }, - { import = "plugins" }, -} --[[@as LazySpec]], { - -- Configure any other `lazy.nvim` configuration options here - install = { colorscheme = { "astrodark", "habamax" } }, - - ui = { - backdrop = 100, - border = "single", - size = { width = 0.8, height = 0.8 }, - }, - - checker = { - enabled = true, - notify = false, - }, - - performance = { - rtp = { - -- disable some rtp plugins, add more to your liking - disabled_plugins = { - "gzip", - "netrwPlugin", - "tarPlugin", - "tohtml", - "zipPlugin", - }, - }, - }, -} --[[@as LazyConfig]]) diff --git a/.config/nvim/lua/plugins/astrocore.lua b/.config/nvim/lua/plugins/astrocore.lua deleted file mode 100644 index 3b73bfe..0000000 --- a/.config/nvim/lua/plugins/astrocore.lua +++ /dev/null @@ -1,46 +0,0 @@ --- AstroCore provides a central place to modify mappings, vim options, autocommands, and more! --- Configuration documentation can be found with `:h astrocore` --- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) --- as this provides autocomplete and documentation while editing - ----@type LazySpec -return { - "AstroNvim/astrocore", - ---@type AstroCoreOpts - opts = { - -- Configure core features of AstroNvim - features = { - large_buf = { size = 1024 * 500, lines = 10000 }, -- set global limits for large files for disabling features like treesitter - autopairs = false, -- enable autopairs at start - cmp = true, -- enable completion at start - diagnostics_mode = 3, -- diagnostic mode on start (0 = off, 1 = no signs/virtual text, 2 = no virtual text, 3 = on) - highlighturl = false, -- highlight URLs at start - notifications = true, -- enable notifications at start - }, - -- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on - diagnostics = { - -- virtual_text = true, - underline = true, - update_in_insert = false, - }, - -- Configuration table of session options for AstroNvim's session management powered by Resession - sessions = { - -- Configure auto saving - autosave = { - last = true, -- auto save last session - cwd = false, -- auto save session for each working directory - }, - -- Patterns to ignore when saving sessions - ignore = { - dirs = {}, -- working directories to ignore sessions in - filetypes = { "gitcommit", "gitrebase" }, -- filetypes to ignore sessions - buftypes = {}, -- buffer types to ignore sessions - }, - }, - -- vim options can be configured here - options = require "core.options", - -- Mappings can be configured through AstroCore as well. - -- NOTE: keycodes follow the casing in the vimdocs. For example, `` must be capitalized - mappings = require "core.mappings"(), - }, -} diff --git a/.config/nvim/lua/plugins/astrolsp.lua b/.config/nvim/lua/plugins/astrolsp.lua deleted file mode 100644 index 131251c..0000000 --- a/.config/nvim/lua/plugins/astrolsp.lua +++ /dev/null @@ -1,115 +0,0 @@ --- Configuration documentation can be found with `:h astrolsp` --- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) --- as this provides autocomplete and documentation while editing - ----@type LazySpec -return { - "AstroNvim/astrolsp", - ---@type AstroLSPOpts - opts = { - -- Configuration table of features provided by AstroLSP - features = { - autoformat = false, -- enable or disable auto formatting on start - codelens = true, -- enable/disable codelens refresh on start - inlay_hints = true, -- enable/disable inlay hints on start - semantic_tokens = true, -- enable/disable semantic token highlighting - }, - -- customize lsp formatting options - formatting = require "plugins.configs.lsp.formatting", - -- enable servers that you already have installed without mason - servers = {}, - -- customize language server configuration options passed to `lspconfig` - ---@diagnostic disable: missing-fields - config = { - clangd = require "plugins.configs.lsp.config.clangd", - basedpyright = require "plugins.configs.lsp.config.basedpyright", - }, - -- customize how language servers are attached - handlers = { - -- a function without a key is simply the default handler, functions take two parameters, the server name and the configured options table for that server - -- function(server, opts) require("lspconfig")[server].setup(opts) end - - -- the key is the server that is being setup with `lspconfig` - -- rust_analyzer = false, -- setting a handler to false will disable the set up of that language server - -- pyright = function(_, opts) require("lspconfig").pyright.setup(opts) end -- or a custom handler function can be passed - }, - -- Configure buffer local auto commands to add when attaching a language server - autocmds = { - -- first key is the `augroup` to add the auto commands to (:h augroup) - lsp_document_highlight = { - -- Optional condition to create/delete auto command group - -- can either be a string of a client capability or a function of `fun(client, bufnr): boolean` - -- condition will be resolved for each client on each execution and if it ever fails for all clients, - -- the auto commands will be deleted for that buffer - cond = "textDocument/documentHighlight", - -- cond = function(client, bufnr) return client.name == "lua_ls" end, - -- list of auto commands to set - { - -- events to trigger - event = { "CursorHold", "CursorHoldI" }, - -- the rest of the autocmd options (:h nvim_create_autocmd) - desc = "Document Highlighting", - callback = function() vim.lsp.buf.document_highlight() end, - }, - { - event = { "CursorMoved", "CursorMovedI", "BufLeave" }, - desc = "Document Highlighting Clear", - callback = function() vim.lsp.buf.clear_references() end, - }, - }, - -- disable inlay hints in insert mode - disable_inlay_hints_on_insert = { - -- only create for language servers that support inlay hints - -- (and only if vim.lsp.inlay_hint is available) - cond = vim.lsp.inlay_hint and "textDocument/inlayHint" or false, - { - -- when going into insert mode - event = "InsertEnter", - desc = "disable inlay hints on insert", - callback = function(args) - local filter = { bufnr = args.buf } - -- if the inlay hints are currently enabled - if vim.lsp.inlay_hint.is_enabled(filter) then - -- disable the inlay hints - vim.lsp.inlay_hint.enable(false, filter) - -- create a single use autocommand to turn the inlay hints back on - -- when leaving insert mode - vim.api.nvim_create_autocmd("InsertLeave", { - buffer = args.buf, - once = true, - callback = function() vim.lsp.inlay_hint.enable(true, filter) end, - }) - end - end, - }, - }, - }, - -- mappings to be set up on attaching of a language server - mappings = { - n = { - gh = { function() vim.lsp.buf.hover() end, desc = "Hover symbol details", cond = "textDocument/hover" }, - gl = { function() vim.diagnostic.open_float() end, desc = "Hover diagnostics" }, - -- a `cond` key can provided as the string of a server capability to be required to attach, or a function with `client` and `bufnr` parameters from the `on_attach` that returns a boolean - gD = { - function() vim.lsp.buf.declaration() end, - desc = "Declaration of current symbol", - cond = "textDocument/declaration", - }, - ["uY"] = { - function() require("astrolsp.toggles").buffer_semantic_tokens() end, - desc = "Toggle LSP semantic highlight (buffer)", - cond = function(client) return client.server_capabilities.semanticTokensProvider and vim.lsp.semantic_tokens end, - }, - }, - }, - -- A custom `on_attach` function to be run after the default `on_attach` function - -- takes two parameters `client` and `bufnr` (`:h lspconfig-setup`) - on_attach = function(client, bufnr) - -- this would disable semanticTokensProvider for all clients - -- client.server_capabilities.semanticTokensProvider = nil - - -- Disable ruff_lsp hover in favor of pyright - if client.name == "ruff_lsp" then client.server_capabilities.hoverProvider = false end - end, - }, -} diff --git a/.config/nvim/lua/plugins/astroui.lua b/.config/nvim/lua/plugins/astroui.lua deleted file mode 100644 index ce854a8..0000000 --- a/.config/nvim/lua/plugins/astroui.lua +++ /dev/null @@ -1,19 +0,0 @@ --- AstroUI provides the basis for configuring the AstroNvim User Interface --- Configuration documentation can be found with `:h astroui` --- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) --- as this provides autocomplete and documentation while editing - ----@type LazySpec -return { - "AstroNvim/astroui", - ---@type AstroUIOpts - opts = { - -- change colorscheme - colorscheme = "bamboo", - -- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes - highlights = require "plugins.configs.ui.highlights", - -- Icons can be configured throughout the interface - icons = require "plugins.configs.ui.icons", - status = require "plugins.configs.ui.status", - }, -} diff --git a/.config/nvim/lua/plugins/auto-save.lua b/.config/nvim/lua/plugins/auto-save.lua deleted file mode 100644 index 548ecb8..0000000 --- a/.config/nvim/lua/plugins/auto-save.lua +++ /dev/null @@ -1,32 +0,0 @@ -return { - "okuuva/auto-save.nvim", - cmd = "ASToggle", -- optional for lazy loading on command - event = { "InsertLeave", "TextChanged" }, -- optional for lazy loading on trigger events - opts = { - -- your config goes here - -- or just leave it empty :) - enabled = true, -- start auto-save when the plugin is loaded (i.e. when your package manager loads it) - trigger_events = { -- See :h events - -- immediate_save = { "BufLeave", "FocusLost" }, -- vim events that trigger an immediate save - defer_save = {"TextChanged" }, -- vim events that trigger a deferred save (saves after `debounce_delay`) - cancel_deferred_save = { "InsertEnter" }, -- vim events that cancel a pending deferred save - }, - -- function that takes the buffer handle and determines whether to save the current buffer or not - -- return true: if buffer is ok to be saved - -- return false: if it's not ok to be saved - -- if set to `nil` then no specific condition is applied - -- - condition = function(buf) - -- Check if vim-visual-multi is active - local visual_multi_active = vim.g.VM_is_active or false - if visual_multi_active then return false end - -- Additional conditions can be added here if needed - return true - end, - - write_all_buffers = false, -- write all buffers when the current one meets `condition` - noautocmd = false, -- do not execute autocmds when saving - lockmarks = false, -- lock marks when saving, see `:h lockmarks` for more details - debounce_delay = 10000, -- delay after which a pending save is executed - }, -} diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua deleted file mode 100644 index ec57633..0000000 --- a/.config/nvim/lua/plugins/cmp.lua +++ /dev/null @@ -1,77 +0,0 @@ -return { - { - "onsails/lspkind.nvim", - opts = { - symbol_map = require "plugins.configs.ui.lspkind", - }, - }, - { - "hrsh7th/nvim-cmp", - opts = function(_, opts) - local cmp = require "cmp" - local luasnip = require "luasnip" - - local function has_words_before() - local line, col = (unpack or table.unpack)(vim.api.nvim_win_get_cursor(0)) - return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match "%s" == nil - end - - return require("astrocore").extend_tbl(opts, { - -- Configure window style - window = { - completion = { - winhighlight = "Normal:Pmenu,CursorLine:PmenuSel,Search:None", - -- border = "none", - side_padding = 0, - }, - }, - formatting = { - -- Show icon at the beginning and menu at the end - fields = { "kind", "abbr", "menu" }, - format = function(entry, vim_item) - local kind = require("lspkind").cmp_format { mode = "symbol_text", maxwidth = 50 }(entry, vim_item) - local strings = vim.split(kind.kind, "%s", { trimetry = true }) - kind.kind = " " .. (strings[1] or "") .. " " - kind.menu = " [" .. (strings[2] or "") .. "]" - return kind - end, - }, - -- Always select the first option - completion = { - completeopt = "menu,menuone,noinsert", - }, - -- Custom mapping - mapping = { - -- Esc to close completion menu - [""] = cmp.mapping { i = cmp.mapping.abort(), c = cmp.mapping.close() }, - -- Tab to select completion - [""] = cmp.mapping(function(fallback) - if cmp.visible() and has_words_before() then - cmp.confirm { select = true } - else - fallback() - end - end, { "i", "s" }), - -- Use and to select luasnip - [""] = cmp.mapping(function(fallback) - if luasnip.jumpable(1) then - luasnip.jump(1) - else - fallback() - end - end, { "i", "s" }), - [""] = cmp.mapping(function(fallback) - if luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { "i", "s" }), - }, - experimental = { - ghost_text = false, -- this feature conflict with copilot.vim's preview. - }, - }) - end, - }, -} diff --git a/.config/nvim/lua/plugins/code-runner.lua b/.config/nvim/lua/plugins/code-runner.lua deleted file mode 100644 index 1b4370a..0000000 --- a/.config/nvim/lua/plugins/code-runner.lua +++ /dev/null @@ -1,30 +0,0 @@ -return { - "CRAG666/code_runner.nvim", - opts = { - filetype = { - java = { - "cd $dir &&", - "javac $fileName &&", - "java $fileNameWithoutExt", - }, - python = { - "cd $dir &&", - "python3 -u $fileName", - }, - rust = { - "cd $dir &&", - "rustc $fileName &&", - "$dir/$fileNameWithoutExt", - }, - }, - }, - keys = { - { "r", ":RunCode", mode = "n", noremap = true, silent = false, desc = "Run code" }, - { "rf", ":RunFile", mode = "n", noremap = true, silent = false, desc = "Run file" }, - { "rft", ":RunFile tab", mode = "n", noremap = true, silent = false, desc = "Run file in new tab" }, - { "rp", ":RunProject", mode = "n", noremap = true, silent = false, desc = "Run project" }, - { "rc", ":RunClose", mode = "n", noremap = true, silent = false, desc = "Close run" }, - { "crf", ":CRFiletype", mode = "n", noremap = true, silent = false, desc = "Change run filetype" }, - { "crp", ":CRProjects", mode = "n", noremap = true, silent = false, desc = "Change run projects" }, - }, -} diff --git a/.config/nvim/lua/plugins/colorschemes.lua b/.config/nvim/lua/plugins/colorschemes.lua deleted file mode 100644 index 114c69c..0000000 --- a/.config/nvim/lua/plugins/colorschemes.lua +++ /dev/null @@ -1,93 +0,0 @@ -return { - { - "catppuccin/nvim", - name = "catppuccin", - opts = { - flavour = "mocha", -- latte, frappe, macchiato, mocha - background = { -- :h background - light = "latte", - dark = "mocha", - }, - color_overrides = { - mocha = { - rosewater = "#efc9c2", - flamingo = "#ebb2b2", - pink = "#f2a7de", - mauve = "#b889f4", - red = "#ea7183", - maroon = "#ea838c", - peach = "#f39967", - yellow = "#eaca89", - green = "#96d382", - teal = "#78cec1", - sky = "#91d7e3", - sapphire = "#68bae0", - blue = "#739df2", - lavender = "#a0a8f6", - text = "#b5c1f1", - subtext1 = "#a6b0d8", - subtext0 = "#959ec2", - overlay2 = "#848cad", - overlay1 = "#717997", - overlay0 = "#63677f", - surface2 = "#505469", - surface1 = "#3e4255", - surface0 = "#2c2f40", - base = "#1a1c2a", - mantle = "#141620", - crust = "#0e0f16", - }, - }, - integrations = { - aerial = true, - alpha = true, - cmp = true, - dap = true, - dap_ui = true, - gitsigns = true, - illuminate = true, - markdown = true, - mason = true, - native_lsp = true, - neotree = true, - notify = true, - semantic_tokens = true, - symbols_outline = true, - telescope = true, - treesitter = true, - ts_rainbow = false, - which_key = true, - window_picker = true, - }, - }, - }, - - { - "scottmckendry/cyberdream.nvim", - opts = { - transparent = true, - italic_comments = true, - hide_fillchars = true, - borderless_telescope = false, - terminal_colors = false, - integrations = { rainbow_delimiters = true }, - }, - }, - - { - "loctvl842/monokai-pro.nvim", - opts = { - terminal_colors = true, - devicons = true, -- highlight the icons of `nvim-web-devicons` - filter = "pro", -- classic | octagon | pro | machine | ristretto | spectrum - plugins = { - indent_blankline = { - context_highlight = "pro", -- default | pro - context_start_underline = false, - }, - }, - }, - }, - - { "ribru17/bamboo.nvim", lazy = true, opts = { integrations = { mini = true } } }, -} diff --git a/.config/nvim/lua/plugins/conda.lua b/.config/nvim/lua/plugins/conda.lua deleted file mode 100644 index 59780ef..0000000 --- a/.config/nvim/lua/plugins/conda.lua +++ /dev/null @@ -1,5 +0,0 @@ - -return { - "kmontocam/nvim-conda", - dependencies = { "nvim-lua/plenary.nvim" }, -} diff --git a/.config/nvim/lua/plugins/configs/lsp/config/basedpyright.lua b/.config/nvim/lua/plugins/configs/lsp/config/basedpyright.lua deleted file mode 100644 index 38c8b92..0000000 --- a/.config/nvim/lua/plugins/configs/lsp/config/basedpyright.lua +++ /dev/null @@ -1,34 +0,0 @@ -return { - before_init = function(_, c) - if not c.settings then c.settings = {} end - if not c.settings.python then c.settings.python = {} end - c.settings.python.pythonPath = vim.fn.exepath "python" - end, - settings = { - basedpyright = { - analysis = { - -- diagnosticMode = "workspace", - diagnosticMode = "openFilesOnly", - typeCheckingMode = "basic", - autoImportCompletions = true, - autoSearchPath = true, - inlayHints = { - variableTypes = true, - functionReturnTypes = true, - callArgumentNames = true, - pytestParameters = true, - }, - useLibraryCodeForTypes = true, - diagnosticSeverityOverrides = { - reportUnusedImport = "information", - reportUnusedFunction = "information", - reportUnusedVariable = "information", - -- reportGeneralTypeIssues = "none", - -- reportOptionalMemberAccess = "none", - -- reportOptionalSubscript = "none", - -- reportPrivateImportUsage = "none", - }, - }, - }, - }, -} diff --git a/.config/nvim/lua/plugins/configs/lsp/config/clangd.lua b/.config/nvim/lua/plugins/configs/lsp/config/clangd.lua deleted file mode 100644 index 93ba604..0000000 --- a/.config/nvim/lua/plugins/configs/lsp/config/clangd.lua +++ /dev/null @@ -1,19 +0,0 @@ -return { - capabilities = { - offsetEncoding = "utf-8", - }, - cmd = { - "clangd", - "--background-index", - "--clang-tidy", - "--all-scopes-completion", - "--header-insertion=iwyu", - "--completion-style=detailed", - "--fallback-style=Microsoft", - }, - init_options = { - clangdFileStatus = true, - usePlaceholders = false, - completeUnimported = true, - }, -} diff --git a/.config/nvim/lua/plugins/configs/lsp/formatting.lua b/.config/nvim/lua/plugins/configs/lsp/formatting.lua deleted file mode 100644 index be08b7b..0000000 --- a/.config/nvim/lua/plugins/configs/lsp/formatting.lua +++ /dev/null @@ -1,20 +0,0 @@ --- Customize lsp formatting options -return { -- control auto formatting on save - format_on_save = { - enabled = false, -- enable or disable format on save globally - allow_filetypes = { -- enable format on save for specified filetypes only - -- "go", - }, - ignore_filetypes = { -- disable format on save for specified filetypes - -- "lua", - }, - }, - disabled = { -- disable formatting capabilities for the listed language servers - -- disable lua_ls formatting capability if you want to use StyLua to format your lua code - -- "lua_ls", - }, - timeout_ms = 1000, -- default format timeout - -- filter = function(client) -- fully override the default formatting function - -- return true - -- end -} diff --git a/.config/nvim/lua/plugins/configs/ui/alpha.lua b/.config/nvim/lua/plugins/configs/ui/alpha.lua deleted file mode 100644 index 8783c65..0000000 --- a/.config/nvim/lua/plugins/configs/ui/alpha.lua +++ /dev/null @@ -1,180 +0,0 @@ --- Store alpha themes - -local banners = { - [1] = { - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣤⣶⣶⣶⣶⣶⣦⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⠿⠿⠿⢿⣿⣿⣿⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠿⢿⣿⣿⣿⡿⠿⠿⢿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⡄⠀⠀⠸⢿⣿⠟⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠘⢿⣿⡿⠁⠀⠀⣾⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⣿⠟⢹⠛⢿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⣸⡀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣠⣼⣿⣷⣤⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠈⠉⠁⠈⠉⠁⠉⠉⠀⠉⠉⠈⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - }, - [2] = { - " ", - " ", - " ", - " ⣴⣶⣤⡤⠦⣤⣀⣤⠆ ⣈⣭⣿⣶⣿⣦⣼⣆ ", - " ⠉⠻⢿⣿⠿⣿⣿⣶⣦⠤⠄⡠⢾⣿⣿⡿⠋⠉⠉⠻⣿⣿⡛⣦ ", - " ⠈⢿⣿⣟⠦ ⣾⣿⣿⣷ ⠻⠿⢿⣿⣧⣄ ", - " ⣸⣿⣿⢧ ⢻⠻⣿⣿⣷⣄⣀⠄⠢⣀⡀⠈⠙⠿⠄ ", - " ⢠⣿⣿⣿⠈ ⣻⣿⣿⣿⣿⣿⣿⣿⣛⣳⣤⣀⣀ ", - " ⢠⣧⣶⣥⡤⢄ ⣸⣿⣿⠘ ⢀⣴⣿⣿⡿⠛⣿⣿⣧⠈⢿⠿⠟⠛⠻⠿⠄ ", - " ⣰⣿⣿⠛⠻⣿⣿⡦⢹⣿⣷ ⢊⣿⣿⡏ ⢸⣿⣿⡇ ⢀⣠⣄⣾⠄ ", - " ⣠⣿⠿⠛ ⢀⣿⣿⣷⠘⢿⣿⣦⡀ ⢸⢿⣿⣿⣄ ⣸⣿⣿⡇⣪⣿⡿⠿⣿⣷⡄ ", - " ⠙⠃ ⣼⣿⡟ ⠈⠻⣿⣿⣦⣌⡇⠻⣿⣿⣷⣿⣿⣿ ⣿⣿⡇ ⠛⠻⢷⣄ ", - " ⢻⣿⣿⣄ ⠈⠻⣿⣿⣿⣷⣿⣿⣿⣿⣿⡟ ⠫⢿⣿⡆ ", - " ⠻⣿⣿⣿⣿⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⡟⢀⣀⣤⣾⡿⠃ ", - " ", - }, - [3] = { - " ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀", - " ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⢀⢄⠀⠀⡴⠁⠈⡆⠀⢀⡤⡀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀", - " ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠢⣄⠀⠀⡇⠀⡕⠀⢸⠀⢠⠃⠀⢮⠀⠹⠀⠀⣠⢾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀", - " ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⣞⠀⢀⠇⠀⡇⠀⡸⠀⠈⣆⠀⡸⠀⢰⠀⠀⡇⣸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀", - " ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⠘⢶⣯⣊⣄⡨⠟⡡⠁⠐⢌⠫⢅⣢⣑⣵⠶⠁⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀", - " ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⢀⣀⣀⠀⠀⠀⠀⠀⣼⣀⠀⢀⠒⠒⠂⠉⠀⠀⠀⠀⠁⠐⠒⠂⡀⠀⣸⣄⠀⠀⠀⠀⠀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀", - " ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⢠⢮⣵⣶⣦⡩⡲⣄⠀⠀⣿⣿⣽⠲⠭⣥⣖⣂⣀⣀⣀⣀⣐⣢⡭⠵⠖⣿⣿⢫⠀⠀⣠⣖⣯⣶⣶⣮⡷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀", - " ⠀⠀ ⠀⠀⠀⠀⠀⠀⣀⣤⣴⣶⣾⣿⣿⣿⣶⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢸⡟⢉⣉⠙⣿⣿⣦⠀⣿⣿⣿⣿⣷⣲⠶⠤⠭⣭⡭⠭⠴⠶⣖⣾⣿⣿⡿⢸⢀⣼⣿⡿⠋⣉⠉⢳⠁⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣶⣿⣿⣿⣿⣶⣶⣤⣄⡀⠀⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠀⢀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠮⣳⣴⣫⠂⠘⣿⣿⣇⢷⢻⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣿⣿⣿⣿⣿⢿⢃⡟⣼⣿⣿⠁⠸⣘⣢⣚⠜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣄⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⠈⢧⢻ ⣿⣿⣟⠻⣿⣿⣿⣿⠛⣩⣿⣿ ⢟⡞⢀⣿⣿⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀ ", - "⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣒⣒⣦⣄⣿⣿⣿⢀⡬⣟⣯ ⣿⢷⣼⡟⢿⣿⡿⣿⣿ ⡻⣤⡀⣿⣿⣸⡠⢔⣒⡒⢤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀ ", - "⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇ ⠀⠀⠀⣀⣀⠀⠀⠀⠀⠀⠀⠀⢾⣟⣅⠉⢎⣽⣿⣿⡏⡟⣤⣮⣿⣿ ⡏⣿⠀⠀⣿⢡⣷ ⣿⣟⢎⣷⢻⣿⣿⣾⡟⠉⣽⡇⡇⠀⠀⠀⠀⠀⠀⠀⣀⣀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀ ", - "⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⢿⣿⣿⣿⣿⣿ ⠀⡴⣫⣭⣭⣍⡲⢄⠀⠀⠀⠀⠈⠻⠋⣠⡮⣻⣿⣿⠃⠳⣏⣼⣿⣿⣿⣿⡇⣿⣴⣴⣿⣾⣿⣿⣿⡿⣄⣩⠏⢸⣿⣿⣿⣧⡀⠛⠞⠁⠀⠀⠀⢀⣤⣺⣭⣭⣭⡝⢦⠀⠀⠀⠀⢸⣿⣿⣿⡿⠿⠛⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠛⠿⢿⣿⣿⣿⡇ ", - "⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣻⣿⣿⣿⡟⠁⠀⠀⠀⠈⢻⣿⣿⣿ ⢸⢹⡟⠁⠀⠉⢫⡳⣵⣄⠀⠀⢀⠴⢊⣿⣾⣿⣿⣿⠀⠀⠀⠻⣬⣽⣿⣿⣿⣿ ⣿⣿⣿⣿⣯⣵⠏⠀⠀⢸⣿⣿⣿⣿⣿⣗⢤⡀⠀⠀⣠⣿⢟⠟⠉⠀⠈⢻⢸⡆⠀⠀⠀⢸⣿⣿⠏⣠⣤⡄⣠⣤⡌⢿⣿⣿⣿⣿⡿⢁⣤⣄⢀⣤⣄⠹⣿⣿⡇ ", - "⠀⠀⠀⠀⣿⣿⣿⠛⠛⠛⠛⠛⠛⢛⣿⣮⣿⣿⣿⠀⠀⠀⠀⠀⠀⢈⣿⣿⡟ ⠘⢏⢧⣤⡀⠀⠀⣇⢻⣿⣆⢔⢕⣵⠟⣏⣿⣿⣿⠋⣵⠚⠄⣾⣿⣿⣿⡿⠟⣛⣛⣛⣛⠻⣿⣿⣿⣿⣧⢰⠓⣏⠻⣿⣿⣿⢹⠻⣿⣿⢦⣸⣿⡏⡾⠀⠀⢠⣤⠎⡼⠀⠀⠀⠀⠸⣿⣿⠀⢿⣿⣿⣿⣿⡟⢸⣿⣿⣿⣿⡇⠸⣿⣿⣿⣿⡿⠀⣿⣿⠇ ", - "⠀⠀⠀⠀⠸⣿⣿⣧⡀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣧⡀⠀⠀⠀⢀⣼⣿⣿⠃ ⠀⠈⠑⠂⠁⠀⠀⣿⠸⣿⢏⢂⣾⠇⠀⣿⣿⣿⡇⡆⠹⢷⣴⣿⡿⠟⠉⣐⡀⠄⣠⡄⡠⣁⡠⠙⠻⢿⣿⣴⡾⠃⢠⢹⣿⣿⢸⠀⢹⣿⣷⢹⣿⢃⡇⠀⠀⠈⠒⠋⠀⠀⠀⠀⠀⠀⢻⣿⣆⠀⠙⠿⠟⠋⢀⣾⣿⣿⣿⣿⣷⡀⠈⠻⡿⠋⠁⣰⣿⡟⠀ ", - "⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⠟⠉⠻⣿⣿⣿⣿⣶⣿⣿⣿⣿⣷⠀ ⠀⠀⠀⠀⠀⠀⠀⢹⡀⣿⢀⣿⣿⡀⠀⢫⣿⣿⣷⣙⠒⠀⠄⠐⠂⣼⠾⣵⠾⠟⣛⣛⠺⢷⣮⠷⣢⠐⠂⠀⠀⠒⣣⣾⣿⡿⡎⠀⢠⣿⣿⡄⣿⣸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣶⣶⣶⣾⣿⣿⡿⠋⠙⢿⣿⣿⣷⣶⣶⣶⣿⣿⣿⡇⠀ ", - "⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣠⣷⡀⢹⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀ ⠀⠀⠀⠀⠀⠀⠀⠘⣟⣿⢸⣿⣿⣷⣄⡈⣾⣿⣿⣿⣿⣿⠻⡷⢺⠃⠠⠁⠈⠋⠀⠀⠉⠁⠙⡀⠘⡗⣾⠿⣿⣿⣿⣿⣿⡿⢀⣴⣿⣿⡿⢃⣯⣽⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⢁⣴⣧⡀⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀ ", - "⠀⠀⠀⠀⠀⠈⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⡆⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣵⡞⠀⠁⠐⢁⠎⠄⣠⠀⠀⡄⠀⢳⠈⠆⠈⠈⢳⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⣸⡷⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣌⠛⢿⣿⣿⣿⣿⣿⣿⠿⠋⣠⣢⠂⠀⢂⠌⠀⠃⠀⠀⠘⠀⢢⡑⠀⠰⣵⡀⠻⢿⣿⣿⣿⣿⣿⣿⡿⠋⣰⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀ ", - " ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠋⠛⠋⠛⠙⠛⠙⠛⠙⠛⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠙⠳⣤⣭⢛⣻⠿⣿⣷⣶⢞⡟⡁⢀⢄⠎⠀⠀⠀⠀⠀⡀⠁⠀⠳⢠⠀⢈⢿⢳⣶⣾⣿⠿⣟⣛⣅⡴⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠛⠙⠛⠙⠛⠛⠋⠛⠋⠛⠋⠀⠀⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠉⠙⠛⠻⠿⠿⡟⢜⠔⡠⢊⠔⠀⡆⠀⡆⠀⠀⢡⢰⢠⠀⢢⠱⣌⢂⠃⢿⠿⠿⠟⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⢀⢤⣊⡰⠵⢺⠉⠸⠀⢰⢃⠀⠀⠀⠀⠀⠸⢸⠀⠀⡇⡞⡑⠬⢆⣑⢤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠈⠁⠀⠀⠀⠘⣾⡸⢀⡜⡾⡀⡇⠀⠀⡴⢠⢻⢦⠀⢃⡿⠀⠀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⡎⠀⠱⡡⠐⠀⠠⠃⢢⠋⠀⢧⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢤⡀⢀⠔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ", - " " - }, - [4] = { - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣤⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣾⣿⣿⠿⠿⠿⠿⢿⣿⣿⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣶⣾⣿⣿⠀⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⠀⣿⣿⣷⣶⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣾⣿⡿⠟⠛⠉⠉⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠉⠉⠛⠻⢿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⡿⠋⠀⠀⠀⠀⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⠙⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠃⠀⠀⣠⣶⣾⣿⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⣿⣷⣦⣄⠀⠀⠸⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⢀⣾⣿⡿⠛⠉⠀⣿⣿⡇⠀⠀⣀⣀⠀⠀⠀⠀⠀⣀⣀⠀⠀⢸⣿⣿⠀⠉⠛⢿⣿⣷⡀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣆⢸⣿⣿⠀⠀⠀⠀⣿⣿⡇⠀⢾⣿⣿⡇⠀⠀⠀⢾⣿⣿⡇⠀⢸⣿⣿⠀⠀⠀⠈⣿⣿⡇⣼⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣄⠀⠀⠀⣿⣿⡇⠀⠈⠙⠋⠀⠀⠀⠀⠈⠙⠋⠀⠀⢸⣿⣿⠀⠀⠀⣰⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣿⣿⣿⣷⣶⣶⣿⣿⣿⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣿⣿⣿⣶⣶⣿⣿⣿⣿⡿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠛⠛⠛⠛⠛⠛⠛⠛⢻⣿⣿⠛⣿⣿⣿⢻⣿⣿⠛⠛⠛⠛⠛⠛⠛⠛⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⠀⢸⣿⣿⠀⣿⣿⣿⢸⣿⣿⠀⠀⣿⣿⣿⣿⣿⣿⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣈⣉⣉⣉⣉⡉⢹⣿⣿⠀⢸⣿⣿⠀⣿⣿⣿⢸⣿⣿⠀⠀⣿⣿⡏⢉⣉⣉⣉⣉⣁⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⠀⢸⣿⣿⠀⣿⣿⣿⢸⣿⣿⠀⠀⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⡇⢸⣿⣿⠀⢸⣿⣿⠀⣿⣿⣿⢸⣿⣿⠀⠀⣿⣿⡇⢸⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⡇⢸⣿⣿⠀⢸⣿⣿⠀⣿⣿⣿⢸⣿⣿⠀⠀⣿⣿⡇⢸⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⡇⢸⣿⣿⣄⣼⣿⣿⠀⣿⣿⣿⠸⣿⣿⣆⣠⣿⣿⡇⢸⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣄⠻⢿⣿⣿⠿⢋⣴⣿⣿⣿⣦⡙⠿⣿⣿⡿⠛⣠⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣷⣶⣤⣴⣶⣿⣿⠿⠙⢿⣿⣿⣶⣦⣴⣶⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠻⠿⠿⠛⠋⠁⠀⠀⠀⠈⠙⠛⠿⠿⠛⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - }, - [5] = { - [[ ██████ ]], - [[ ████▒▒▒▒▒▒████ ]], - [[ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ]], - [[ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ]], - [[ ██▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ]], - [[ ██▒▒▒▒▒▒ ▒▒▓▓▒▒▒▒▒▒ ▓▓▓▓ ]], - [[ ██▒▒▒▒▒▒ ▒▒▓▓▒▒▒▒▒▒ ▒▒▓▓ ]], - [[ ██▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ██ ]], - [[ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ]], - [[ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ]], - [[ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ]], - [[ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ]], - [[ ██▒▒██▒▒▒▒▒▒██▒▒▒▒▒▒▒▒██▒▒▒▒██ ]], - [[ ████ ██▒▒██ ██▒▒▒▒██ ██▒▒██ ]], - [[ ██ ██ ████ ████ ]], - }, - [7] = { - "⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⣀⣤⣴⣶⣾⣿⣿⣿⣶⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣶⣿⣿⣿⣿⣶⣶⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣶⣶⣿⣿⣿⣷⣶⣶⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⢿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⡿⠿⠛⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠛⠿⢿⣿⣿⣿⡇⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣻⣿⣿⣿⡟⠁⠀⠀⠀⠈⢻⣿⣿⣿⠀⠀⠀⠀⠀⠀⢸⣿⣿⠏⣠⣤⡄⣠⣤⡌⢿⣿⣿⣿⣿⡿⢁⣤⣄⢀⣤⣄⠹⣿⣿⡇⠀⠀⠀⠀⠀⢺⣿⣿⡿⠋⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠛⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⠛⠛⠛⠛⠛⠛⢛⣿⣮⣿⣿⣿⠀⠀⠀⠀⠀⠀⢈⣿⣿⡟⠀⠀⠀⠀⠀⠀⠸⣿⣿⠀⢿⣿⣿⣿⣿⡟⢸⣿⣿⣿⣿⡇⠸⣿⣿⣿⣿⡿⠀⣿⣿⠇⠀⠀⠀⠀⠀⢸⣿⣿⡇⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⠋⠁⠠⢴⣾⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣧⡀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣧⡀⠀⠀⠀⢀⣼⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⢻⣿⣆⠀⠙⠿⠟⠋⢀⣾⣿⣿⣿⣿⣷⡀⠈⠻⡿⠋⠁⣰⣿⡟⠀⠀⠀⠀⠀⠀⠀⢿⣿⣷⣄⠀⠀⠀⢀⣰⣿⣿⣿⣿⣿⣿⣷⣶⣦⣤⣄⣼⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⠟⠉⠻⣿⣿⣿⣿⣶⣿⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣶⣶⣶⣾⣿⣿⡿⠋⠙⢿⣿⣿⣷⣶⣶⣶⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣷⣾⣿⣿⣿⡟⢻⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣠⣷⡀⢹⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⢁⣴⣧⡀⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⢀⣼⣆⢘⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠋⠛⠋⠛⠙⠛⠙⠛⠙⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠛⠙⠛⠙⠛⠛⠋⠛⠋⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠛⠙⠛⠛⠋⠛⠋⠛⠋⠛⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - }, - [8] = { - "⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⣀⣤⣴⣶⣾⣿⣿⣿⣶⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⢿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣻⣿⣿⣿⡟⠁⠀⠀⠀⠈⢻⣿⣿⣿⠀⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⠛⠛⠛⠛⠛⠛⢛⣿⣮⣿⣿⣿⠀⠀⠀⠀⠀⠀⢈⣿⣿⡟⠀⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣧⡀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣧⡀⠀⠀⠀⢀⣼⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⠟⠉⠻⣿⣿⣿⣿⣶⣿⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣠⣷⡀⢹⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠋⠛⠋⠛⠙⠛⠙⠛⠙⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - }, - [9] = { - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣶⣿⣿⣿⣿⣶⣶⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⡿⠿⠛⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠛⠿⢿⣿⣿⣿⡇⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⢸⣿⣿⠏⣠⣤⡄⣠⣤⡌⢿⣿⣿⣿⣿⡿⢁⣤⣄⢀⣤⣄⠹⣿⣿⡇⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠸⣿⣿⠀⢿⣿⣿⣿⣿⡟⢸⣿⣿⣿⣿⡇⠸⣿⣿⣿⣿⡿⠀⣿⣿⠇⠀⠀⠀⠀⠀ ", - "⠀⠀⠀⠀⠀⠀⠀⢻⣿⣆⠀⠙⠿⠟⠋⢀⣾⣿⣿⣿⣿⣷⡀⠈⠻⡿⠋⠁⣰⣿⡟⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣶⣶⣶⣾⣿⣿⡿⠋⠙⢿⣿⣿⣷⣶⣶⣶⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⢁⣴⣧⡀⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠛⠙⠛⠙⠛⠛⠋⠛⠋⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - }, - [10] = { - [[ ]], - [[ ]], - [[ ]], - [[ ]], - [[ ]], - [[ ]], - [[ ]], - [[ __ ]], - [[ ___ ___ ___ __ __ /\_\ ___ ___ ]], - [[ / _ `\ / __`\ / __`\/\ \/\ \\/\ \ / __` __`\ ]], - [[/\ \/\ \/\ __//\ \_\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]], - [[\ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\]], - [[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/]], - [[ Welcome       ]], - }, -} - -return banners diff --git a/.config/nvim/lua/plugins/configs/ui/heirline.lua b/.config/nvim/lua/plugins/configs/ui/heirline.lua deleted file mode 100644 index 211e994..0000000 --- a/.config/nvim/lua/plugins/configs/ui/heirline.lua +++ /dev/null @@ -1,215 +0,0 @@ -local M = {} - -local status = require "astroui.status" -local get_icon = require("astroui").get_icon -local is_available = require("astrocore").is_available -local path_func = status.provider.filename { modify = ":.:h", fallback = "" } - --- custom statusline -M.statusline = { - hl = { fg = "fg", bg = "bg" }, - -- Show mode text - status.component.mode { - -- enable mode text with padding as well as an icon before it - mode_text = { - icon = { kind = "Mode", padding = { left = 0, right = 1 } }, - }, - -- surround the component with a separators - surround = { - separator = "left", - }, - }, - status.component.file_info { - file_icon = { padding = { left = 0, right = 1 } }, - filename = { fallback = "Empty" }, - filetype = false, - file_modified = false, - surround = { - separator = "none", - color = "bg", - }, - }, - status.component.git_branch { - padding = { left = 2, right = 1 }, - surround = { - separator = "none", - color = "bg", - }, - }, - -- Add a icon to represent diagnostic and git git diff - -- status.component.builder { - -- provider = function() return get_icon "Diagnostic" .. "/" .. get_icon "Github" end, - -- hl = { fg = "black" }, - -- surround = { - -- separator = { " ", "" }, - -- color = "#81ab9e", - -- }, - -- }, - status.component.diagnostics { - surround = { - separator = "none", - color = "bg", - }, - }, - status.component.git_diff { - padding = { left = 1 }, - surround = { - separator = "none", - color = "bg", - }, - }, - status.component.fill(), - -- Show search counts and results - { - condition = function(self) - local query = vim.fn.getreg "/" - if query == "" then return false end - query = query:gsub([[^\V]], "") - query = query:gsub([[\<]], ""):gsub([[\>]], "") - - local search_count = vim.fn.searchcount { recompute = 1, maxcount = -1 } - if search_count.total == 0 then return false end - - self.query = query - self.count = search_count - return true - end, - status.component.builder { - provider = function(self) - return status.utils.stylize(" " .. self.query .. " " .. self.count.current .. "/" .. self.count.total, { - icon = { kind = "Search" }, - }) - end, - hl = { fg = "black" }, - surround = { - separator = "left", - color = "search_bg", - }, - }, - }, - -- Show file encoding - status.component.builder { - provider = function() - return status.utils.stylize(string.upper(vim.bo.fileencoding), { - icon = { kind = "FileEncoding", padding = { right = 1 } }, - }) - end, - hl = { fg = "text_fg" }, - padding = { right = 1 }, - }, - -- Show tab width - status.component.builder { - provider = function() - return status.utils.stylize(tostring(vim.bo.tabstop), { - icon = { kind = "TabWidth", padding = { right = 1 } }, - }) - end, - hl = { fg = "text_fg" }, - padding = { right = 1 }, - }, - -- Show Grapple tag - status.component.builder { - condition = function() - if status.condition.is_file and is_available "grapple.nvim" then return true end - return false - end, - provider = function() - local tag = tostring(require("grapple").name_or_index()) - if tag == "nil" then tag = "NO" end - return status.utils.stylize(tag, { - icon = { kind = "Grapple", padding = { right = 1 } }, - }) - end, - - hl = { fg = "text_fg" }, - padding = { right = 1 }, - }, - -- Show Codeium status - status.component.builder { - condition = function() - if status.condition.lsp_attached and is_available "neocodeium" then return true end - return false - end, - provider = function() - local codeium_status = "OFF" - if require("neocodeium.options").options.enabled == true then codeium_status = "ON" end - return status.utils.stylize(codeium_status, { - icon = { kind = "Codeium", padding = { right = 1 } }, - }) - end, - hl = { fg = "text_fg" }, - padding = { right = 1 }, - }, - status.component.lsp { - lsp_client_names = { - icon = { kind = "ActiveLSP", padding = { right = 1 } }, - }, - surround = { separator = "left" }, - }, - { - status.component.builder { - { provider = get_icon "ScrollText" }, - padding = { right = 1 }, - hl = { fg = "black" }, - surround = { - separator = { " ", "" }, - color = { main = "nav_icon_bg", left = "bg" }, - }, - }, - status.component.nav { - percentage = { padding = { left = 0 } }, - ruler = false, - scrollbar = false, - surround = { separator = { "", "" } }, - }, - }, -} - --- custom winbar -M.winbar = { - -- store the current buffer number - init = function(self) self.bufnr = vim.api.nvim_get_current_buf() end, - fallthrough = false, -- pick the correct winbar based on condition - -- inactive winbar - { - condition = function() return not status.condition.is_active() end, - -- show the path to the file relative to the working directory - status.component.separated_path { path_func = path_func }, - -- add the file name and icon - status.component.file_info { - file_icon = { hl = status.hl.file_icon "winbar", padding = { left = 0 } }, - filename = {}, - filetype = false, - file_modified = false, - file_read_only = false, - hl = status.hl.get_attributes("winbarnc", true), - surround = false, - update = "BufEnter", - }, - }, - -- active winbar - { - -- show the path to the file relative to the working directory - status.component.separated_path { path_func = path_func }, - -- add the file name and icon - status.component.file_info { -- add file_info to breadcrumbs - file_icon = { hl = status.hl.filetype_color, padding = { left = 0 } }, - filename = {}, - filetype = false, - file_modified = false, - file_read_only = false, - hl = status.hl.get_attributes("winbar", true), - surround = false, - update = "BufEnter", - }, - -- show the breadcrumbs - status.component.breadcrumbs { - icon = { hl = true }, - hl = status.hl.get_attributes("winbar", true), - prefix = true, - padding = { left = 0 }, - }, - }, -} - -return M diff --git a/.config/nvim/lua/plugins/configs/ui/highlights.lua b/.config/nvim/lua/plugins/configs/ui/highlights.lua deleted file mode 100644 index 3609ec2..0000000 --- a/.config/nvim/lua/plugins/configs/ui/highlights.lua +++ /dev/null @@ -1,41 +0,0 @@ -return { - init = function() -- this table overrides highlights in all themes - local get_hlgroup = require("astroui").get_hlgroup - local ui = require "astroui" - local utils = require "astrocore" - - local hl = { - -- remove background of virtual texts - DiagnosticVirtualTextError = { fg = get_hlgroup("DiagnosticError").fg, bg = "none" }, - DiagnosticVirtualTextHint = { fg = get_hlgroup("DiagnosticHint").fg, bg = "none" }, - DiagnosticVirtualTextInfo = { fg = get_hlgroup("DiagnosticInfo").fg, bg = "none" }, - DiagnosticVirtualTextWarn = { fg = get_hlgroup("DiagnosticWarn").fg, bg = "none" }, - - -- remove background of inlay hints - LspInlayHint = { fg = get_hlgroup("LspInlayHint").fg, bg = "none" }, - } - - if utils.is_available "kanagawa.nvim" and ui.config.colorscheme == "kanagawa" then - local colors = require("kanagawa.colors").setup() - local theme = colors.theme - hl = utils.extend_tbl(hl, { - Pmenu = { fg = theme.ui.shade0, bg = theme.ui.bg_p1 }, -- add `blend = vim.o.pumblend` to enable transparency - PmenuSel = { fg = "NONE", bg = theme.ui.bg_p2 }, - PmenuSbar = { bg = theme.ui.bg_m1 }, - PmenuThumb = { bg = theme.ui.bg_p2 }, - TelescopeTitle = { fg = theme.ui.special, bold = true }, - TelescopePromptNormal = { bg = theme.ui.bg_p1 }, - TelescopePromptBorder = { fg = theme.ui.bg_p1, bg = theme.ui.bg_p1 }, - TelescopeResultsNormal = { fg = theme.ui.fg_dim, bg = theme.ui.bg_m1 }, - TelescopeResultsBorder = { fg = theme.ui.bg_m1, bg = theme.ui.bg_m1 }, - TelescopePreviewNormal = { bg = theme.ui.bg_dim }, - TelescopePromptNormalopePreviewBorder = { bg = theme.ui.bg_dim, fg = theme.ui.bg_dim }, - }) - end - - return hl - end, - astrotheme = { -- a table of overrides/changes when applying the astrotheme theme - -- Normal = { bg = "#000000" }, - }, -} diff --git a/.config/nvim/lua/plugins/configs/ui/icons.lua b/.config/nvim/lua/plugins/configs/ui/icons.lua deleted file mode 100644 index 7de765b..0000000 --- a/.config/nvim/lua/plugins/configs/ui/icons.lua +++ /dev/null @@ -1,59 +0,0 @@ -return { - -- LSP - ActiveLSP = "", - ActiveTS = "", - LSPLoaded = "", - LSPLoading1 = "⠋", - LSPLoading2 = "⠙", - LSPLoading3 = "⠹", - LSPLoading4 = "⠸", - LSPLoading5 = "⠼", - LSPLoading6 = "⠴", - LSPLoading7 = "⠦", - LSPLoading8 = "⠧", - LSPLoading9 = "⠇", - LSPLoading10 = "⠏", - -- Git - Github = "  ", - GitAdd = "", - GitBranch = "", - GitChange = "", - GitConflict = "", - GitDelete = "", - GitIgnored = "", - GitRenamed = "", - GitStaged = "✓", - GitUnstaged = "✗", - GitUntracked = "★", - Neogit = "", - -- Files - Ellipsis = "", - DefaultFile = "", - FileModified = "", - FileReadOnly = "", - FoldClosed = "", - FoldOpened = "", - FolderClosed = "", - FolderEmpty = "", - FolderOpen = "", - -- DAP - DapBreakpoint = "", - DapBreakpointCondition = "", - DapBreakpointRejected = "", - DapLogPoint = "", - DapStopped = "", - -- Diagnostics - Diagnostic = " 󰒡 ", - DiagnosticError = "", - DiagnosticHint = "", - DiagnosticInfo = "󰋼", - DiagnosticWarn = "", - -- Misc - Mode = "     ", - FileEncoding = "", - ScrollText = "", - TabWidth = "", - Search = "", - Grapple = "󰓹", - Codeium = "󱚝", -} diff --git a/.config/nvim/lua/plugins/configs/ui/lspkind.lua b/.config/nvim/lua/plugins/configs/ui/lspkind.lua deleted file mode 100644 index 256ccba..0000000 --- a/.config/nvim/lua/plugins/configs/ui/lspkind.lua +++ /dev/null @@ -1,38 +0,0 @@ --- LSP kind symbol map -return { - Array = "", - Boolean = "", - Class = "", - Color = "", - Constant = "", - Constructor = "", - Enum = "", - EnumMember = "", - Event = "", - Field = "", - File = "", - Folder = "", - Function = "", - Interface = "", - Key = "", - Keyword = "󰌋", - Method = "", - Module = "", - Namespace = "", - Null = "", - Number = "", - Object = "", - Operator = "", - Package = "", - Property = "", - Reference = "", - Snippet = "󰗀", - String = "", - Struct = "", - Text = "󰉿", - TypeParameter = "", - Unit = "ﱦ", - Value = "", - Variable = "", -} - diff --git a/.config/nvim/lua/plugins/configs/ui/status.lua b/.config/nvim/lua/plugins/configs/ui/status.lua deleted file mode 100644 index 113948e..0000000 --- a/.config/nvim/lua/plugins/configs/ui/status.lua +++ /dev/null @@ -1,39 +0,0 @@ -return { - separators = { - left = { " ", " " }, -- separator for the left side of the statusline - right = { " ", "" }, -- separator for the right side of the statusline - -- tab = { "", "" }, - }, - colors = function(hl) - local get_hlgroup = require("astroui").get_hlgroup - -- use helper function to get highlight group properties - hl.text_fg = "#60b2a7" - hl.insert = "#a9b665" - hl.visual = "#e8b142" - hl.replace = "#ea6962" - hl.terminal = "#a89984" - hl.file_info_fg = hl.text_fg - hl.file_info_bg = "#bac2de" - hl.git_branch_fg = "#bd81b6" - hl.git_branch_bg = "#f5c2e7" - hl.lsp_fg = "black" - hl.lsp_bg = "#7fb4ca" - hl.search_bg = "#c8c093" - hl.grapple_bg = "#eba0ac" - hl.file_encoding_bg = "#f7768e" - hl.tab_width_bg = "#ff966c" - hl.nav_fg = "black" - hl.nav_bg = get_hlgroup("String").fg - hl.nav_icon_bg = hl.nav_bg - hl.normal = "#ade8f4" - return hl - end, - attributes = { - mode = { bold = true }, - file_info = { bold = false }, - git_branch = { bold = false }, - diagnostics = { bold = false }, - git_diff = { bold = false }, - lsp = { bold = false }, - }, -} diff --git a/.config/nvim/lua/plugins/configs/ui/transparent.lua b/.config/nvim/lua/plugins/configs/ui/transparent.lua deleted file mode 100644 index 1000a34..0000000 --- a/.config/nvim/lua/plugins/configs/ui/transparent.lua +++ /dev/null @@ -1,39 +0,0 @@ -return function(opts) - return require("astrocore").extend_tbl(opts, { - -- table: default groups - groups = { - "Normal", - "NormalNC", - "Comment", - "Constant", - "Special", - "Identifier", - "Statement", - "PreProc", - "Type", - "Underlined", - "Todo", - "String", - "Function", - "Conditional", - "Repeat", - "Operator", - "Structure", - "LineNr", - "NonText", - "SignColumn", - "CursorLineNr", - "EndOfBuffer", - }, - -- table: additional groups that should be cleared - extra_groups = { - -- "NormalFloat", - -- "NvimTreeNormal", - -- "NeoTreeNormal", - -- "NeoTreeFloatBorder", - -- "NeoTreeNormalNC", - }, - -- table: groups you don't want to clear - exclude_groups = {}, - }) -end diff --git a/.config/nvim/lua/plugins/disabled.lua b/.config/nvim/lua/plugins/disabled.lua deleted file mode 100644 index d4d8f32..0000000 --- a/.config/nvim/lua/plugins/disabled.lua +++ /dev/null @@ -1,34 +0,0 @@ --- Plugins to disable -return { - { "nvim-neo-tree/neo-tree.nvim", enabled = true }, - { "s1n7ax/nvim-window-picker", enabled = false }, - { "akinsho/toggleterm.nvim", enabled = false }, - { "NvChad/nvim-colorizer.lua", enabled = false }, - { "catppuccin/nvim", name = "catppuccin", enabled = false }, - { "rebelot/kanagawa.nvim", enabled = false }, - { "folke/tokyonight.nvim", enabled = false }, - { "f4z3r/gruvbox-material.nvim", name = "gruvbox-material", enabled = false }, - { "b0o/SchemaStore.nvim", enabled = false }, - - { "ray-x/lsp_signature.nvim", enabled = false }, - { "kmontocam/nvim-conda", enabled = false }, - { "NMAC427/guess-indent.nvim", enabled = false }, - { "lukas-reineke/indent-blankline.nvim", enabled = false }, - { "chipsenkbeil/distant.nvim", enabled = false }, - { "gen740/SmoothCursor.nvim", enabled = false }, - { "stevearc/resession.nvim", enabled = true }, - { "AstroNvim/astrotheme", enabled = false }, - { "echasnovski/mini.move", enabled = true }, - { "scottmckendry/cyberdream.nvim", enabled = false }, - { "HiPhish/rainbow-delimiters.nvim", enabled = true }, - { "xiyaowong/transparent.nvim", enabled = true }, - { "MagicDuck/grug-far.nvim", enabled = false }, - { "loctvl842/monokai-pro.nvim", enabled = false }, - { "xiyaowong/transparent.nvim", enabled = false }, - { "iamcco/markdown-preview.nvim", enabled = false }, - { "max397574/better-escape.nvim", enabled = false }, - - -- { "hrsh7th/nvim-cmp", enabled = false }, -} - --- if true then return {} end diff --git a/.config/nvim/lua/plugins/distant.lua b/.config/nvim/lua/plugins/distant.lua deleted file mode 100644 index 4539e1f..0000000 --- a/.config/nvim/lua/plugins/distant.lua +++ /dev/null @@ -1,21 +0,0 @@ - --- NOTE: control remote pc -return { - "chipsenkbeil/distant.nvim", - branch = "v0.3", - event = "VimEnter", - cmd = { - "DistantLaunch", - "DistantOpen", - "DistantConnect", - "DistantInstall", - "DistantMetadata", - "DistantShell", - "DistantShell", - "DistantSystemInfo", - "DistantClientVersion", - "DistantSessionInfo", - "DistantCopy", - }, - config = function() require("distant"):setup() end, -} diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua deleted file mode 100644 index 05bfd9c..0000000 --- a/.config/nvim/lua/plugins/editor.lua +++ /dev/null @@ -1,266 +0,0 @@ -local rainbow = require "plugins.ts-rainbow" --- Plugins that enhance editor experience -return { - { - "numToStr/Comment.nvim", - opts = { - -- Ignore empty line - ignore = "^$", - }, - keys = { - { - "", - function() require("Comment.api").toggle.linewise.count(vim.v.count > 0 and vim.v.count or 1) end, - mode = { "n", "i" }, - desc = "Comment line", - }, - { - "", - "lua require('Comment.api').toggle.linewise(vim.fn.visualmode())", - mode = { "v" }, - desc = "Comment block", - }, - }, - }, - -- Built-in terminal support - { - "akinsho/toggleterm.nvim", - opts = function(_, opts) - -- Use powershell for toggleterm on windows - -- if vim.fn.has "win32" then opts.shell = "pwsh.exe" end - end, - }, - -- File tagging and navigation - -- { - -- "cbochs/grapple.nvim", - -- dependencies = { - -- "nvim-lua/plenary.nvim", - -- { - -- "AstroNvim/astrocore", - -- opts = function(_, opts) - -- opts.mappings.n[""] = { desc = require("astroui").get_icon("Grapple", 1, true) .. "Grapple" } - -- end, - -- }, - -- }, - -- opts = { - -- scope = "git_branch", - -- }, - -- cmd = { "Grapple" }, - -- keys = { - -- { "a", "Grapple tag", desc = "Add tag to file" }, - -- { "d", "Grapple untag", desc = "Delete tag from file" }, - -- { "e", "Grapple toggle_tags", desc = "Select from tags" }, - -- { "s", "Grapple toggle_scopes", desc = "Select a project scope" }, - -- { "x", "Grapple reset", desc = "Clear tags" }, - -- { "", "Grapple cycle forward", desc = "Select next tag" }, - -- { "", "Grapple cycle backward", desc = "Select previous tag" }, - -- }, - -- }, - -- Better escape support - -- { - -- "max397574/better-escape.nvim", - -- opts = { - -- mapping = { "jj", "kk", "jk" }, - -- }, - -- }, - -- Better indent blankline - -- { - -- "shellRaining/hlchunk.nvim", - -- event = { "BufReadPre", "BufNewFile" }, - -- config = function(_, opts) - -- require("hlchunk").setup(require("astrocore").extend_tbl(opts, { - -- ignore = {}, - -- chunk = { - -- enable = true, - -- notify = false, - -- chars = { - -- -- horizontal_line = "━", - -- -- vertical_line = "┃", - -- -- left_top = "┏", - -- -- left_bottom = "┗", - -- -- right_arrow = "➤", - -- }, - -- style = "#06D001", - -- delay = 25, - -- }, - -- indent = { - -- enable = false, - -- use_treesitter = true, - -- chars = { - -- "│", - -- }, - -- }, - -- blank = { - -- enable = false, - -- chars = { - -- " ", - -- }, - -- style = { - -- { bg = "#434437" }, - -- { bg = "#2f4440" }, - -- { bg = "#433054" }, - -- { bg = "#284251" }, - -- }, - -- }, - -- line_num = { - -- enable = false, - -- }, - -- })) - -- end, - -- }, - -- AI code completion - -- { - -- "monkoose/neocodeium", - -- event = "LspAttach", - -- config = function() - -- local neocodeium = require "neocodeium" - -- neocodeium.setup() - -- vim.keymap.set("n", ";", function() require("neocodeium.commands").toggle() end) - -- vim.keymap.set("i", "", function() require("neocodeium").accept() end) - -- vim.keymap.set("i", "", function() require("neocodeium").accept_word() end) - -- vim.keymap.set("i", "", function() require("neocodeium").accept_line() end) - -- vim.keymap.set("i", "", function() require("neocodeium").cycle_or_complete() end) - -- vim.keymap.set("i", "", function() require("neocodeium").cycle_or_complete(-1) end) - -- vim.keymap.set("i", "", function() require("neocodeium").clear() end) - -- end, - -- }, - -- Multi-cursors support - { - "brenton-leighton/multiple-cursors.nvim", - version = "*", - opts = {}, - keys = { - { "", "MultipleCursorsAddDown", mode = { "n", "i", "x" } }, - { "", "MultipleCursorsAddUp", mode = { "n", "i", "x" } }, - { "", "MultipleCursorsMouseAddDelete", mode = { "n", "i" } }, - { "a", "MultipleCursorsAddMatches", mode = { "n", "x" } }, - { "", "MultipleCursorsAddJumpNextMatch", mode = { "n", "x" } }, - }, - }, - -- Better code folding - { - "kevinhwang91/nvim-ufo", - opts = { - -- Add virtual text to show how many lines are folded - fold_virt_text_handler = function(virtText, lnum, endLnum, width, truncate) - local newVirtText = {} - local suffix = (" 󰁂 %d "):format(endLnum - lnum) - local sufWidth = vim.fn.strdisplaywidth(suffix) - local targetWidth = width - sufWidth - local curWidth = 0 - for _, chunk in ipairs(virtText) do - local chunkText = chunk[1] - local chunkWidth = vim.fn.strdisplaywidth(chunkText) - if targetWidth > curWidth + chunkWidth then - table.insert(newVirtText, chunk) - else - chunkText = truncate(chunkText, targetWidth - curWidth) - local hlGroup = chunk[2] - table.insert(newVirtText, { chunkText, hlGroup }) - chunkWidth = vim.fn.strdisplaywidth(chunkText) - -- str width returned from truncate() may less than 2nd argument, need padding - if curWidth + chunkWidth < targetWidth then - suffix = suffix .. (" "):rep(targetWidth - curWidth - chunkWidth) - end - break - end - curWidth = curWidth + chunkWidth - end - table.insert(newVirtText, { suffix, "MoreMsg" }) - return newVirtText - end, - }, - }, - - -- Better split navigation and resize - { - "mrjones2014/smart-splits.nvim", - event = "VeryLazy", -- load on very lazy for mux detection - opts = function(_, opts) - opts.ignored_filetypes = { "nofile", "quickfix", "qf", "prompt" } - opts.ignored_buftypes = { "nofile" } - end, - keys = { - { - "", - function() require("smart-splits").move_cursor_left() end, - mode = { "n" }, - desc = "Move to left split", - }, - { - "", - function() require("smart-splits").move_cursor_right() end, - mode = { "n", "t" }, - desc = "Move to right split", - }, - { - "", - function() require("smart-splits").move_cursor_up() end, - mode = { "n" }, - desc = "Move to above split", - }, - { - "", - function() require("smart-splits").move_cursor_down() end, - mode = { "n" }, - desc = "Move to below split", - }, - { - "", - function() require("smart-splits").resize_left() end, - mode = { "n" }, - desc = "Resize split left", - }, - { - "", - function() require("smart-splits").resize_right() end, - mode = { "n" }, - desc = "Resize split right", - }, - { - "", - function() require("smart-splits").resize_up() end, - mode = { "n" }, - desc = "Resize split up", - }, - { - "", - function() require("smart-splits").resize_down() end, - mode = { "n" }, - desc = "Resize split down", - }, - }, - }, - -- -- Find and replace - -- { - -- "MagicDuck/grug-far.nvim", - -- cmd = "GrugFar", - -- config = function() - -- require("grug-far").setup { - -- windowCreationCommand = "tabnew", - -- } - -- end, - -- keys = { - -- { - -- "R", - -- function() require("grug-far").grug_far { prefills = { search = vim.fn.expand "" } } end, - -- mode = { "n" }, - -- desc = "Open GrugFar", - -- }, - -- }, - -- }, - -- Markdown preview support - { - "OXY2DEV/markview.nvim", - dependencies = { - { - "nvim-treesitter/nvim-treesitter", - opts = function(_, opts) - opts.ensure_installed = - require("astrocore").list_insert_unique(opts.ensure_installed, { "markdown", "markdown_inline" }) - end, - }, - }, - ft = { "markdown" }, - }, -} diff --git a/.config/nvim/lua/plugins/indent-scope.lua b/.config/nvim/lua/plugins/indent-scope.lua deleted file mode 100644 index 9cc3a9a..0000000 --- a/.config/nvim/lua/plugins/indent-scope.lua +++ /dev/null @@ -1,90 +0,0 @@ -local ignore_filetypes = { - "aerial", - "alpha", - "dashboard", - "help", - "lazy", - "mason", - "neo-tree", - "NvimTree", - "neogitstatus", - "notify", - "startify", - "toggleterm", - "Trouble", -} -local ignore_buftypes = { - "nofile", - "prompt", - "quickfix", - "terminal", -} -local char = "󰥓" - -return { - "echasnovski/mini.indentscope", - event = "User AstroFile", - opts = function() - - vim.api.nvim_set_hl(0, "MiniIndentscopeSymbol", { fg = "#FF4500" }) -- Replace #FF4500 with your desired color - return { - options = { try_as_border = true, border = "both" }, - symbol = require("astrocore").plugin_opts("indent-blankline.nvim").context_char or char, - draw = { - delay = 0, - animation = function(s, n) return 10 end, - }, - } - end, - dependencies = { - { - "lukas-reineke/indent-blankline.nvim", - optional = true, - opts = { scope = { enabled = false } }, - }, - { - "AstroNvim/astrocore", - opts = { - autocmds = { - mini_indentscope = { - { - event = "FileType", - desc = "Disable indentscope for certain filetypes", - callback = function(event) - if vim.b[event.buf].miniindentscope_disable == nil then - local filetype = vim.bo[event.buf].filetype - local blankline_opts = require("astrocore").plugin_opts "indent-blankline.nvim" - if vim.tbl_contains(blankline_opts.filetype_exclude or ignore_filetypes, filetype) then - vim.b[event.buf].miniindentscope_disable = true - end - end - end, - }, - { - event = "BufWinEnter", - desc = "Disable indentscope for certain buftypes", - callback = function(event) - if vim.b[event.buf].miniindentscope_disable == nil then - local buftype = vim.bo[event.buf].buftype - local blankline_opts = require("astrocore").plugin_opts "indent-blankline.nvim" - if vim.tbl_contains(blankline_opts.buftype_exclude or ignore_buftypes, buftype) then - vim.b[event.buf].miniindentscope_disable = true - end - end - end, - }, - { - event = "TermOpen", - desc = "Disable indentscope for terminals", - callback = function(event) - if vim.b[event.buf].miniindentscope_disable == nil then - vim.b[event.buf].miniindentscope_disable = true - end - end, - }, - }, - }, - }, - }, - }, -} diff --git a/.config/nvim/lua/plugins/lsp-features.lua b/.config/nvim/lua/plugins/lsp-features.lua deleted file mode 100644 index 43ec8e9..0000000 --- a/.config/nvim/lua/plugins/lsp-features.lua +++ /dev/null @@ -1,44 +0,0 @@ --- Plugins to add additional functionality for LSP -return { - -- Signature help - { - "ray-x/lsp_signature.nvim", - event = "User AstroFile", - config = function() - require("lsp_signature").setup { - bind = true, - handler_opts = { border = "rounded" }, - hint_enable = true, - - hint_prefix = "🐼 ", - debug = true, - verbose = true, - } - end, - }, - -- Additional features for Clangd - { - "p00f/clangd_extensions.nvim", - lazy = true, - ft = { "c", "cpp" }, - dependencies = { - "AstroNvim/astrocore", - opts = { - autocmds = { - clangd_extensions = { - { - event = "LspAttach", - desc = "Load clangd_extensions with clangd", - callback = function(args) - if assert(vim.lsp.get_client_by_id(args.data.client_id)).name == "clangd" then - require "clangd_extensions" - vim.api.nvim_del_augroup_by_name "clangd_extensions" - end - end, - }, - }, - }, - }, - }, - }, -} diff --git a/.config/nvim/lua/plugins/markdown-preview-nvim.lua b/.config/nvim/lua/plugins/markdown-preview-nvim.lua deleted file mode 100644 index 5ee3991..0000000 --- a/.config/nvim/lua/plugins/markdown-preview-nvim.lua +++ /dev/null @@ -1,42 +0,0 @@ ----@type LazySpec -return { - "iamcco/markdown-preview.nvim", - build = function(plugin) - local package_manager = vim.fn.executable "yarn" and "yarn" or vim.fn.executable "npx" and "npx -y yarn" or false - - --- HACK: Use `yarn` or `npx` when possible, otherwise throw an error - ---@see https://github.com/iamcco/markdown-preview.nvim/issues/690 - ---@see https://github.com/iamcco/markdown-preview.nvim/issues/695 - if not package_manager then error "Missing `yarn` or `npx` in the PATH" end - - local cmd = string.format( - "!cd %s && cd app && COREPACK_ENABLE_AUTO_PIN=0 %s install --frozen-lockfile", - plugin.dir, - package_manager - ) - - vim.cmd(cmd) - end, - ft = { "markdown", "markdown.mdx" }, - cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, - init = function() - local plugin = require("lazy.core.config").spec.plugins["markdown-preview.nvim"] - vim.g.mkdp_filetypes = require("lazy.core.plugin").values(plugin, "ft", true) - end, - dependencies = { - { "AstroNvim/astroui", opts = { icons = { Markdown = "" } } }, - { - "AstroNvim/astrocore", - optional = true, - opts = function(_, opts) - local maps = opts.mappings - local prefix = "M" - - maps.n[prefix] = { desc = require("astroui").get_icon("Markdown", 1, true) .. "Markdown" } - maps.n[prefix .. "p"] = { "MarkdownPreview", desc = "Preview" } - maps.n[prefix .. "s"] = { "MarkdownPreviewStop", desc = "Stop preview" } - maps.n[prefix .. "t"] = { "MarkdownPreviewToggle", desc = "Toggle preview" } - end, - }, - }, -} diff --git a/.config/nvim/lua/plugins/mason-setup.lua b/.config/nvim/lua/plugins/mason-setup.lua deleted file mode 100644 index ba0a838..0000000 --- a/.config/nvim/lua/plugins/mason-setup.lua +++ /dev/null @@ -1,40 +0,0 @@ -return { - "williamboman/mason.nvim", - opts = function() - require("mason").setup { - ui = { - ---@since 1.0.0 - -- Whether to automatically check for new versions when opening the :Mason window. - check_outdated_packages_on_open = true, - - ---@since 1.0.0 - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "single", - - ---@since 1.0.0 - -- Width of the window. Accepts: - -- - Integer greater than 1 for fixed width. - -- - Float in the range of 0-1 for a percentage of screen width. - width = 0.8, - - ---@since 1.0.0 - -- Height of the window. Accepts: - -- - Integer greater than 1 for fixed height. - -- - Float in the range of 0-1 for a percentage of screen height. - height = 0.9, - - icons = { - ---@since 1.0.0 - -- The list icon to use for installed packages. - package_installed = "  ", - ---@since 1.0.0 - -- The list icon to use for packages that are installing, or queued for installation. - package_pending = "  ", - ---@since 1.0.0 - -- The list icon to use for packages that are not installed. - package_uninstalled = "  ", - }, - }, - } - end, -} diff --git a/.config/nvim/lua/plugins/mason.lua b/.config/nvim/lua/plugins/mason.lua deleted file mode 100644 index 9e9e93f..0000000 --- a/.config/nvim/lua/plugins/mason.lua +++ /dev/null @@ -1,46 +0,0 @@ --- Customize Mason plugins - ----@type LazySpec -return { - -- use mason-lspconfig to configure LSP installations - { - "williamboman/mason-lspconfig.nvim", - -- overrides `require("mason-lspconfig").setup(...)` - opts = function(_, opts) - -- add more things to the ensure_installed table protecting against community packs modifying it - opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { - "lua_ls", - "clangd", - "basedpyright", - "ruff", - }) - end, - }, - -- use mason-null-ls to configure Formatters/Linter installation for null-ls sources - { - "jay-babu/mason-null-ls.nvim", - -- overrides `require("mason-null-ls").setup(...)` - opts = function(_, opts) - -- add more things to the ensure_installed table protecting against community packs modifying it - opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { - "stylua", - "clang-format", - -- "black", - "prettier", - }) - end, - }, - { - "jay-babu/mason-nvim-dap.nvim", - -- add this to lazy load dap-related plugins - init = function() end, - -- overrides `require("mason-nvim-dap").setup(...)` - opts = function(_, opts) - -- add more things to the ensure_installed table protecting against community packs modifying it - opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { - "codelldb", - "python", - }) - end, - }, -} diff --git a/.config/nvim/lua/plugins/mini-icons.lua b/.config/nvim/lua/plugins/mini-icons.lua deleted file mode 100644 index 8d228ae..0000000 --- a/.config/nvim/lua/plugins/mini-icons.lua +++ /dev/null @@ -1,47 +0,0 @@ -return { - "echasnovski/mini.icons", - opts = function(_, opts) - if vim.g.icons_enabled ~= false then - opts.style = "glyph" -- Use glyph icons when available - else - opts.style = "ascii" -- Fallback to ASCII if glyphs are disabled - end - end, - lazy = true, - specs = { - { "nvim-tree/nvim-web-devicons", enabled = false, optional = true }, - { - "nvim-neo-tree/neo-tree.nvim", - opts = { - default_component_configs = { - icon = { - provider = function(icon, node) - local text, hl - local mini_icons = require "mini.icons" - if node.type == "file" then - text, hl = mini_icons.get("file", node.name) - elseif node.type == "directory" then - text, hl = mini_icons.get("directory", node.name) - if node:is_expanded() then text = nil end - end - - if text then icon.text = text end - if hl then icon.highlight = hl end - end, - }, - kind_icon = { - provider = function(icon, node) - icon.text, icon.highlight = require("mini.icons").get("lsp", node.extra.kind.name) - end, - }, - }, - }, - }, - }, - init = function() - package.preload["nvim-web-devicons"] = function() - require("mini.icons").mock_nvim_web_devicons() - return package.loaded["nvim-web-devicons"] - end - end, -} diff --git a/.config/nvim/lua/plugins/mini-move.lua b/.config/nvim/lua/plugins/mini-move.lua deleted file mode 100644 index b8d119d..0000000 --- a/.config/nvim/lua/plugins/mini-move.lua +++ /dev/null @@ -1,40 +0,0 @@ -return { - "echasnovski/mini.move", - keys = function(_, keys) - local plugin = require("lazy.core.config").spec.plugins["mini.move"] - local opts = require("lazy.core.plugin").values(plugin, "opts", false) -- resolve mini.clue options - -- Populate the keys based on the user's options - local mappings = { - { opts.mappings.line_left, desc = "Move line left" }, - { opts.mappings.line_right, desc = "Move line right" }, - { opts.mappings.line_down, desc = "Move line down" }, - { opts.mappings.line_up, desc = "Move line up" }, - { opts.mappings.left, desc = "Move selection left", mode = "v" }, - { opts.mappings.right, desc = "Move selection right", mode = "v" }, - { opts.mappings.down, desc = "Move selection down", mode = "v" }, - { opts.mappings.up, desc = "Move selection up", mode = "v" }, - } - mappings = vim.tbl_filter(function(m) return m[1] and #m[1] > 0 end, mappings) - return vim.list_extend(mappings, keys) - end, - opts = { - mappings = { - left = "", - right = "", - down = "", - up = "", - line_left = "", - line_right = "", - line_down = "", - line_up = "", - }, - }, - specs = { - { - "bamboo", -- Replace with the correct name for the Bamboo colorscheme package if necessary - optional = true, - ---@type BambooOptions -- Adjust type if Bamboo has specific options - opts = { integrations = { mini = true } }, - }, - }, -} diff --git a/.config/nvim/lua/plugins/motion.lua b/.config/nvim/lua/plugins/motion.lua deleted file mode 100644 index 837632e..0000000 --- a/.config/nvim/lua/plugins/motion.lua +++ /dev/null @@ -1,134 +0,0 @@ --- Plugins related to motion -return { - -- Faster change/delete/replace delimiter pairs - { - "echasnovski/mini.surround", - opts = { n_lines = 200 }, - keys = { - { "sa", mode = { "n", "x" }, desc = "Add surrounding" }, - { "sd", mode = { "n", "x" }, desc = "Delete surrounding" }, - { "sr", mode = { "n", "x" }, desc = "Replace surrounding" }, - { "sf", mode = { "n", "x" }, desc = "Find right surrounding" }, - { "sF", mode = { "n", "x" }, desc = "Find left surrounding" }, - { "sh", mode = { "n", "x" }, desc = "Highlight surrounding" }, - { "sn", mode = { "n", "x" }, desc = "Update `MiniSurround.config.n_lines`" }, - }, - }, - -- Brackets splitjoin - { - "Wansmer/treesj", - cmd = { "TSJToggle", "TSJSplit", "TSJJoin" }, - opts = { - use_default_keymaps = false, - max_join_length = 150, - }, - keys = { - { "gs", "TSJToggle", mode = { "n" }, desc = "Toggle splitjoin" }, - }, - }, - -- { - -- "echasnovski/mini.ai", - -- event = "User AstroFile", - -- opts = function() - -- -- Register to which-key - -- local i = { - -- [" "] = "Whitespace", - -- ["?"] = "User Prompt", - -- _ = "Underscore", - -- a = "Argument", - -- b = "Paired ), ], }", - -- c = "Class", - -- d = "Digit(s)", - -- e = "Word in CamelCase & snake_case", - -- f = "Function", - -- g = "Entire file", - -- o = "Block, conditional, loop", - -- q = "Quote `, \", '", - -- t = "Tag", - -- u = "Use/call function & method", - -- U = "Use/call without dot in name", - -- } - -- local a = vim.deepcopy(i) - -- for k, v in pairs(a) do - -- a[k] = v:gsub(" including.*", "") - -- end - - -- local ic = vim.deepcopy(i) - -- local ac = vim.deepcopy(a) - -- for key, name in pairs { n = "Next", l = "Last" } do - -- i[key] = vim.tbl_extend("force", { name = "Inside " .. name .. " textobject" }, ic) - -- a[key] = vim.tbl_extend("force", { name = "Around " .. name .. " textobject" }, ac) - -- end - -- require("which-key").register { - -- mode = { "o", "x" }, - -- i = i, - -- a = a, - -- } - - -- -- define custom textobjects - -- local ai = require "mini.ai" - -- return { - -- n_lines = 500, - -- custom_textobjects = { - -- o = ai.gen_spec.treesitter { -- code block - -- a = { "@block.outer", "@conditional.outer", "@loop.outer" }, - -- i = { "@block.inner", "@conditional.inner", "@loop.inner" }, - -- }, - -- f = ai.gen_spec.treesitter { a = "@function.outer", i = "@function.inner" }, -- function - -- c = ai.gen_spec.treesitter { a = "@class.outer", i = "@class.inner" }, -- class - -- t = { "<([%p%w]-)%f[^<%w][^<>]->.-", "^<.->().*()$" }, -- tags - -- d = { "%f[%d]%d+" }, -- digits - -- e = { -- Word with case - -- { "%u[%l%d]+%f[^%l%d]", "%f[%S][%l%d]+%f[^%l%d]", "%f[%P][%l%d]+%f[^%l%d]", "^[%l%d]+%f[^%l%d]" }, - -- "^().*()$", - -- }, - -- u = ai.gen_spec.function_call(), -- u for "Usage" - -- U = ai.gen_spec.function_call { name_pattern = "[%w_]" }, -- without dot in function name - -- }, - -- } - -- end, - -- }, - -- Better move by word - { - "chrisgrieser/nvim-spider", - opts = {}, - keys = { - { "w", "lua require('spider').motion('w')", mode = { "n", "o", "x" }, desc = "Spider-w" }, - { "e", "lua require('spider').motion('e')", mode = { "n", "o", "x" }, desc = "Spider-e" }, - { "b", "lua require('spider').motion('b')", mode = { "n", "o", "x" }, desc = "Spider-b" }, - { "ge", "lua require('spider').motion('ge')", mode = { "n", "o", "x" }, desc = "Spider-ge" }, - }, - }, - -- Duplicate line/block up/down - { - "hinell/duplicate.nvim", - keys = { - { "", "LineDuplicate -1", mode = { "n" }, desc = "Duplicate line up" }, - { "", "LineDuplicate +1", mode = { "n" }, desc = "Duplicate line down" }, - { "", "VisualDuplicate -1", mode = { "x" }, desc = "Duplicate block up" }, - { "", "VisualDuplicate +1", mode = { "x" }, desc = "Duplicate block down" }, - }, - }, - -- Better character motion - { - "folke/flash.nvim", - event = "VeryLazy", - opts = {}, - keys = { - { "gj", function() require("flash").jump() end, mode = { "n", "x", "o" }, desc = "Flash" }, - { - "gJ", - function() require("flash").treesitter() end, - mode = { "n", "x", "o" }, - desc = "Flash Treesitter", - }, - { "r", function() require("flash").remote() end, mode = "o", desc = "Remote Flash" }, - { - "R", - function() require("flash").treesitter_search() end, - mode = { "x", "o" }, - desc = "Treesitter Search", - }, - }, - }, -} diff --git a/.config/nvim/lua/plugins/multiple-cursor.lua b/.config/nvim/lua/plugins/multiple-cursor.lua deleted file mode 100644 index 2226b00..0000000 --- a/.config/nvim/lua/plugins/multiple-cursor.lua +++ /dev/null @@ -1,40 +0,0 @@ -return { - "brenton-leighton/multiple-cursors.nvim", - event = 'VimEnter', - cmd = { - "MultipleCursorsAddDown", - "MultipleCursorsAddUp", - "MultipleCursorsMouseAddDelete", - "MultipleCursorsAddMatches", - "MultipleCursorsAddMatchesV", - "MultipleCursorsAddJumpNextMatch", - "MultipleCursorsJumpNextMatch", - "MultipleCursorsLock", - }, - dependencies = { - "AstroNvim/astrocore", - opts = function(_, opts) - local maps = opts.mappings - for lhs, map in pairs { - [""] = { "MultipleCursorsAddDown", desc = "Add cursor down" }, - [""] = { "MultipleCursorsAddUp", desc = "Add cursor up" }, - [""] = { "MultipleCursorsMouseAddDelete", desc = "Add cursor with mouse" }, - } do - maps.n[lhs] = map - maps.i[lhs] = map - end - local prefix = "c" - for lhs, map in pairs { - [prefix .. "a"] = { "MultipleCursorsAddMatches", desc = "Add cursor matches" }, - [prefix .. "A"] = { "MultipleCursorsAddMatchesV", desc = "Add cursor matches in previous visual area" }, - [prefix .. "j"] = { "MultipleCursorsAddJumpNextMatch", desc = "Add cursor and jump to next match" }, - [prefix .. "J"] = { "MultipleCursorsJumpNextMatch", desc = "Move cursor to next match" }, - [prefix .. "l"] = { "MultipleCursorsLock", desc = "Lock virtual cursors" }, - } do - maps.n[lhs] = map - maps.x[lhs] = map - end - end, - }, - opts = {}, -} diff --git a/.config/nvim/lua/plugins/multiple-visual.lua b/.config/nvim/lua/plugins/multiple-visual.lua deleted file mode 100644 index ab1b1e3..0000000 --- a/.config/nvim/lua/plugins/multiple-visual.lua +++ /dev/null @@ -1,4 +0,0 @@ -return { - "mg979/vim-visual-multi", - event = "VeryLazy", -} diff --git a/.config/nvim/lua/plugins/neo-tree.lua b/.config/nvim/lua/plugins/neo-tree.lua deleted file mode 100644 index 637600c..0000000 --- a/.config/nvim/lua/plugins/neo-tree.lua +++ /dev/null @@ -1,34 +0,0 @@ --- NOTE: always show hidden files and dot files -return { - "nvim-neo-tree/neo-tree.nvim", - opts = { - source_selector = { - winbar = false, - }, - filesystem = { - filtered_items = { - visible = true, - show_hidden_count = true, - hide_dotfiles = true, - hide_gitignored = true, - hide_by_name = { - -- '.zip', - -- '.rar', - -- '.pdf', - -- '.DS_Store', - -- 'thumbs.db', - }, - never_show = {}, - - never_show_by_pattern = { -- uses glob style patterns - '*.zip', - '*.rar', - '*.pdf', - }, - }, - }, - enable_git_status = false, - enable_diagnostics = false, - git_status_async = false, - }, -} diff --git a/.config/nvim/lua/plugins/noice.lua b/.config/nvim/lua/plugins/noice.lua deleted file mode 100644 index ca85a39..0000000 --- a/.config/nvim/lua/plugins/noice.lua +++ /dev/null @@ -1,109 +0,0 @@ -return { - "folke/noice.nvim", - event = "VeryLazy", - dependencies = { "MunifTanjim/nui.nvim" }, - - config = function() - require("noice").setup { - -- Configuration here, or leave empty to use defaults - views = { }, - messages = { - enabled = false, -- disables the Noice messages UI - }, - notify = { - enabled = false, -- disables Noice notifications - }, - lsp = { - progress = { - enabled = false, - }, - hover = { - enabled = false, -- disables Noice LSP hover - }, - signature = { - enabled = false, -- disables Noice LSP signature help - }, - message = { - enabled = false, - }, - }, - presets = { - bottom_search = false, -- use a classic bottom cmdline for search - command_palette = true, -- position the cmdline and popupmenu together - long_message_to_split = false, -- long messages will be sent to a split - inc_rename = false, -- enables an input dialog for inc-rename.nvim - lsp_doc_border = false, -- add a border to hover docs and signature help - }, - - routes = { - -- disable "written" notification - { - filter = { event = "msg_show", kind = "", find = "written" }, - opts = { skip = true }, - }, - -- disable paste/undo notification - { - filter = { event = "msg_show", find = "^%d+ more lines" }, - opts = { skip = true }, - }, - -- disable delete/undo notification - { - filter = { event = "msg_show", find = "^%d+ fewer lines" }, - opts = { skip = true }, - }, - -- disable yank notification - { - filter = { event = "msg_show", find = "^%d+ lines yanked$" }, - opts = { skip = true }, - }, - -- disable move notification - { - filter = { event = "msg_show", find = "^%d+ lines moved$" }, - }, - }, - } - end, - specs = { - { - "nvim-treesitter/nvim-treesitter", - opts = function(_, opts) - if opts.ensure_installed ~= "all" then - opts.ensure_installed = require("astrocore").list_insert_unique( - opts.ensure_installed, - { "bash", "markdown", "markdown_inline", "regex", "vim" } - ) - end - end, - }, - { - "AstroNvim/astrolsp", - optional = true, - ---@param opts AstroLSPOpts - opts = function(_, opts) - -- No need to manage lsp_handlers as noice is not handling them now - end, - }, - { - "heirline.nvim", - optional = true, - opts = function(_, opts) - local noice_opts = require("astrocore").plugin_opts "noice.nvim" - if vim.tbl_get(noice_opts, "lsp", "progress", "enabled") ~= false then -- check if lsp progress is enabled - opts.statusline[9] = require("astroui.status").component.lsp { lsp_progress = false } - end - end, - }, - { - "folke/edgy.nvim", - optional = true, - opts = function(_, opts) - if not opts.bottom then opts.bottom = {} end - table.insert(opts.bottom, { - ft = "noice", - size = { height = 0.4 }, - filter = function(_, win) return vim.api.nvim_win_get_config(win).relative == "" end, - }) - end, - }, - }, -} diff --git a/.config/nvim/lua/plugins/none-ls.lua b/.config/nvim/lua/plugins/none-ls.lua deleted file mode 100644 index 4f51935..0000000 --- a/.config/nvim/lua/plugins/none-ls.lua +++ /dev/null @@ -1,22 +0,0 @@ --- Customize None-ls sources - ----@type LazySpec -return { - "nvimtools/none-ls.nvim", - opts = function(_, opts) - -- config variable is the default configuration table for the setup function call - local null_ls = require "null-ls" - - -- Check supported formatters and linters - -- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/formatting - -- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics - opts.sources = { - -- Set a formatter - null_ls.builtins.formatting.stylua, - null_ls.builtins.formatting.clang_format, - -- null_ls.builtins.formatting.black, - null_ls.builtins.formatting.prettier, - } - return opts - end, -} diff --git a/.config/nvim/lua/plugins/nvim-dap-ui.lua b/.config/nvim/lua/plugins/nvim-dap-ui.lua deleted file mode 100644 index 401bcd0..0000000 --- a/.config/nvim/lua/plugins/nvim-dap-ui.lua +++ /dev/null @@ -1,50 +0,0 @@ -return { - "rcarriga/nvim-dap-ui", - requires = { "mfussenegger/nvim-dap", "nvim-neotest/nvim-nio" }, - opts = { - eval = true, - mappings = { - edit = "e", - expand = { "", "<2-LeftMouse>" }, - open = "o", - remove = "d", - repl = "r", - toggle = "t" - }, - - layouts = { - { - elements = { - { - id = "repl", - size = 0.5, - }, - { - id = "console", - size = 0.5, - }, - }, - position = "left", - size = 40, - }, - { - elements = { - { - id = "scopes", - size = 0.25, - }, - { - id = "breakpoints", - size = 0.25, - }, - -- { - -- id = "stacks", - -- size = 0.25, - -- }, - }, - position = "bottom", - size = 20, - }, - }, - }, -} diff --git a/.config/nvim/lua/plugins/nvim-dap-virtual-text.lua b/.config/nvim/lua/plugins/nvim-dap-virtual-text.lua deleted file mode 100644 index 6e8fcde..0000000 --- a/.config/nvim/lua/plugins/nvim-dap-virtual-text.lua +++ /dev/null @@ -1,9 +0,0 @@ -return { - "theHamsta/nvim-dap-virtual-text", - event = "User AstroFile", - opts = { - commented = false, - enabled = true, - enabled_commands = true, - }, -} diff --git a/.config/nvim/lua/plugins/smooth-cursor.lua b/.config/nvim/lua/plugins/smooth-cursor.lua deleted file mode 100644 index aa6ef32..0000000 --- a/.config/nvim/lua/plugins/smooth-cursor.lua +++ /dev/null @@ -1,75 +0,0 @@ -return { - "gen740/SmoothCursor.nvim", - config = function() - require("smoothcursor").setup { - type = "default", -- Cursor movement calculation method, choose "default", "exp" (exponential) or "matrix". - - cursor = "", -- Cursor shape (requires Nerd Font). Disabled in fancy mode. - texthl = "SmoothCursor", -- Highlight group. Default is { bg = nil, fg = "#FFD400" }. Disabled in fancy mode. - linehl = nil, -- Highlights the line under the cursor, similar to 'cursorline'. "CursorLine" is recommended. Disabled in fancy mode. - - fancy = { - enable = true, -- enable fancy mode - head = { cursor = "▷", texthl = "SmoothCursor", linehl = nil }, -- false to disable fancy head - body = { - { cursor = "󰝥", texthl = "SmoothCursorRed" }, - { cursor = "󰝥", texthl = "SmoothCursorOrange" }, - { cursor = "●", texthl = "SmoothCursorYellow" }, - { cursor = "●", texthl = "SmoothCursorGreen" }, - { cursor = "•", texthl = "SmoothCursorAqua" }, - { cursor = ".", texthl = "SmoothCursorBlue" }, - { cursor = ".", texthl = "SmoothCursorPurple" }, - }, - tail = { cursor = nil, texthl = "SmoothCursor" }, -- false to disable fancy tail - }, - - matrix = { -- Loaded when 'type' is set to "matrix" - head = { - -- Picks a random character from this list for the cursor text - cursor = require "smoothcursor.matrix_chars", - -- Picks a random highlight from this list for the cursor text - texthl = { - "SmoothCursor", - }, - linehl = nil, -- No line highlight for the head - }, - body = { - length = 6, -- Specifies the length of the cursor body - -- Picks a random character from this list for the cursor body text - cursor = require "smoothcursor.matrix_chars", - -- Picks a random highlight from this list for each segment of the cursor body - texthl = { - "SmoothCursorGreen", - }, - }, - tail = { - -- Picks a random character from this list for the cursor tail (if any) - cursor = nil, - -- Picks a random highlight from this list for the cursor tail - texthl = { - "SmoothCursor", - }, - }, - unstop = false, -- Determines if the cursor should stop or not (false means it will stop) - }, - - autostart = true, -- Automatically start SmoothCursor - always_redraw = true, -- Redraw the screen on each update - flyin_effect = nil, -- Choose "bottom" or "top" for flying effect - speed = 25, -- Max speed is 100 to stick with your current position - intervals = 35, -- Update intervals in milliseconds - priority = 10, -- Set marker priority - timeout = 3000, -- Timeout for animations in milliseconds - threshold = 3, -- Animate only if cursor moves more than this many lines - max_threshold = nil, -- If you move more than this many lines, don't animate (if `nil`, deactivate check) - disable_float_win = false, -- Disable in floating windows - enabled_filetypes = nil, -- Enable only for specific file types, e.g., { "lua", "vim" } - disabled_filetypes = nil, -- Disable for these file types, ignored if enabled_filetypes is set. e.g., { "TelescopePrompt", "NvimTree" } - -- Show the position of the latest input mode positions. - -- A value of "enter" means the position will be updated when entering the mode. - -- A value of "leave" means the position will be updated when leaving the mode. - -- `nil` = disabled - show_last_positions = nil, - } - end, -} diff --git a/.config/nvim/lua/plugins/todo-comments.lua b/.config/nvim/lua/plugins/todo-comments.lua deleted file mode 100644 index 818a833..0000000 --- a/.config/nvim/lua/plugins/todo-comments.lua +++ /dev/null @@ -1,25 +0,0 @@ -return { - "folke/todo-comments.nvim", - dependencies = { "nvim-lua/plenary.nvim" }, - opts = { - -- your configuration comes here - -- or leave it empty to use the default settings - -- refer to the configuration section below - - keywords = { - FIX = { - icon = " ", -- icon used for the sign, and in search results - color = "error", -- can be a hex color, or a named color (see below) - alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords - -- signs = false, -- configure signs for some keywords individually - }, - TODO = { icon = " ", color = "info" }, - GOAL = { icon = " ", color = "info" }, - HACK = { icon = " ", color = "warning" }, - WARN = { icon = " ", color = "warning", alt = { "WARNING", "XXX" } }, - PERF = { icon = " ", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } }, - NOTE = { icon = " ", color = "hint", alt = { "INFO" } }, - TEST = { icon = "⏲ ", color = "test", alt = { "TESTING", "PASSED", "FAILED" } }, - }, - }, -} diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua deleted file mode 100644 index 55af936..0000000 --- a/.config/nvim/lua/plugins/treesitter.lua +++ /dev/null @@ -1,27 +0,0 @@ --- Customize Treesitter - ----@type LazySpec -return { - "nvim-treesitter/nvim-treesitter", - opts = function(_, opts) - -- add more things to the ensure_installed table protecting against community packs modifying it - opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { - "lua", - "c", - "cpp", - "python", - -- "javascript", - }) - opts.highlight = { - enable = true, - disable = { "c", "rust", "tsx", "javascript", "python"}, - additional_vim_regex_highlighting = false, - custom_captures = { - -- Highlight local variables - ["variable.local"] = "Identifier", - }, - } - - vim.api.nvim_set_hl(0, "Identifier", { fg = "#55ffff" }) - end, -} diff --git a/.config/nvim/lua/plugins/ts-rainbow.lua b/.config/nvim/lua/plugins/ts-rainbow.lua deleted file mode 100644 index 6f7802a..0000000 --- a/.config/nvim/lua/plugins/ts-rainbow.lua +++ /dev/null @@ -1,33 +0,0 @@ -return { - { - "HiPhish/rainbow-delimiters.nvim", - dependencies = { - "nvim-treesitter/nvim-treesitter", - { - "AstroNvim/astrocore", - opts = { - mappings = { - n = { - ["u("] = { - function() - local bufnr = vim.api.nvim_get_current_buf() - require("rainbow-delimiters").toggle(bufnr) - require("astrocore").notify( - string.format( - "Buffer rainbow delimeters %s", - require("rainbow-delimiters").is_enabled(bufnr) and "on" or "off" - ) - ) - end, - desc = "Toggle rainbow delimeters (buffer)", - }, - }, - }, - }, - }, - }, - event = "User AstroFile", - main = "rainbow-delimiters.setup", - opts = {}, - }, -} diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua deleted file mode 100644 index 26e24e8..0000000 --- a/.config/nvim/lua/plugins/ui.lua +++ /dev/null @@ -1,41 +0,0 @@ --- Plugins related to UI -return { - { - "goolord/alpha-nvim", - dependencies = { "echasnovski/mini.icons" }, - opts = function(_, opts) - -- customize the dashboard header - opts.section.header.val = require("plugins.configs.ui.alpha")[10] - opts.section.buttons.val = {} - end, - -- config = function() require("alpha").setup(require("alpha.themes.startify").config) end, - }, - { - "rebelot/heirline.nvim", - opts = function(_, opts) - opts.statusline = require("plugins.configs.ui.heirline").statusline - opts.winbar = require("plugins.configs.ui.heirline").winbar - end, - }, - { - "rcarriga/nvim-notify", - opts = function(_, opts) - -- Do this to prevent the warning - opts.background_colour = "#000000" - opts.timeout = 2000 - opts.fps = 60 - opts.render = "compact" - opts.top_down = false - end, - }, - - -- Transparent background - { - "xiyaowong/transparent.nvim", - lazy = false, - opts = function(_, opts) opts = require "plugins.configs.ui.transparent"(opts) end, - keys = { - { "uT", "TransparentToggle", desc = "Toggle transparent" }, - }, - }, -} diff --git a/.config/nvim/lua/plugins/ultimate-autopair.lua b/.config/nvim/lua/plugins/ultimate-autopair.lua deleted file mode 100644 index 26edc94..0000000 --- a/.config/nvim/lua/plugins/ultimate-autopair.lua +++ /dev/null @@ -1,64 +0,0 @@ -return { - "altermo/ultimate-autopair.nvim", - event = "InsertEnter", - branch = "v0.6", --recommended as each new version will have breaking changes - opts = { - -- disable autopair in the command line: https://github.com/altermo/ultimate-autopair.nvim/issues/8 - cmap = false, - extensions = { - cond = { - -- disable in comments - -- https://github.com/altermo/ultimate-autopair.nvim/blob/6fd0d6aa976a97dd6f1bed4d46be1b437613a52f/Q%26A.md?plain=1#L26 - cond = { - function(fn) return not fn.in_node "comment" end, - }, - }, - -- get fly mode working on strings: - -- https://github.com/altermo/ultimate-autopair.nvim/issues/33 - fly = { - nofilter = true, - }, - }, - config_internal_pairs = { - { '"', '"', fly = true }, - { "'", "'", fly = true }, - { "[", "]", fly = true }, - { "{", "}", fly = true }, - { "(", ")", fly = true }, - -- { "<", ">", fly = true }, - }, - }, - dependencies = { - { - "AstroNvim/astrocore", - opts = { - mappings = { - n = { - ["ua"] = { - desc = "Toggle Ultimate Autopair", - function() - local notify = require("astrocore").notify - local function bool2str(bool) return bool and "on" or "off" end - local ok, ultimate_autopair = pcall(require, "ultimate-autopair") - if ok then - ultimate_autopair.toggle() - vim.g.ultimate_autopair_enabled = require("ultimate-autopair.core").disable - notify(string.format("ultimate-autopair %s", bool2str(not vim.g.ultimate_autopair_enabled))) - else - notify "ultimate-autopair not available" - end - end, - }, - }, - }, - }, - }, - }, - specs = { - { - "windwp/nvim-autopairs", - optional = true, - enabled = false, - }, - }, -} diff --git a/.config/nvim/lua/polish.lua b/.config/nvim/lua/polish.lua deleted file mode 100644 index a9bca36..0000000 --- a/.config/nvim/lua/polish.lua +++ /dev/null @@ -1,6 +0,0 @@ --- This will run last in the setup process and is a good place to configure --- things like custom filetypes. This just pure lua so anything that doesn't --- fit in the normal config locations above can go here - --- Run autocommands -require("core.autocmds") \ No newline at end of file diff --git a/.config/nvim/neovim.yml b/.config/nvim/neovim.yml deleted file mode 100644 index b9235ab..0000000 --- a/.config/nvim/neovim.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -base: lua51 - -globals: - vim: - any: true diff --git a/.config/nvim/selene.toml b/.config/nvim/selene.toml deleted file mode 100644 index e7005c3..0000000 --- a/.config/nvim/selene.toml +++ /dev/null @@ -1,8 +0,0 @@ -std = "neovim" - -[rules] -global_usage = "allow" -if_same_then_else = "allow" -incorrect_standard_library_use = "allow" -mixed_table = "allow" -multiple_statements = "allow" diff --git a/.config/rofi/MyCustom/rofi b/.config/rofi/MyCustom/rofi new file mode 160000 index 0000000..f3835e7 --- /dev/null +++ b/.config/rofi/MyCustom/rofi @@ -0,0 +1 @@ +Subproject commit f3835e7f728bf6d94fb3c2c683c6754e6ccd202e diff --git a/.config/rofi/backup/clipboad.rasi.bkp b/.config/rofi/backup/clipboad.rasi.bkp deleted file mode 100644 index e69de29..0000000 diff --git a/.config/rofi/backup/clipboard.rasi b/.config/rofi/backup/clipboard.rasi new file mode 100644 index 0000000..09a11ea --- /dev/null +++ b/.config/rofi/backup/clipboard.rasi @@ -0,0 +1,113 @@ +// Config // +configuration { + modi: "drun"; + show-icons: false; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + width: 23em; + height: 30em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0.5em; + orientation: vertical; + children: [ "wallbox" , "listbox" ]; + background-color: transparent; +} +wallbox { + spacing: 0em; + padding: 0em; + expand: false; + orientation: horizontal; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.blur", width); + children: [ "wallframe" , "inputbar" ]; +} +wallframe { + width: 5em; + spacing: 0em; + padding: 0em; + expand: false; + background-color: @main-bg; + background-image: url("~/.cache/hyde/wall.quad", width); +} + + +// Inputs // +inputbar { + enabled: true; + padding: 0em; + children: [ "entry" ]; + background-color: @main-bg; + expand: true; +} +entry { + enabled: true; + padding: 1.8em; + text-color: @main-fg; + background-color: transparent; +} + + +// Lists // +listbox { + spacing: 0em; + padding: 0em; + orientation: vertical; + children: [ "dummy" , "listview" , "dummy" ]; + background-color: transparent; +} +listview { + enabled: true; + padding: 0.5em; + columns: 1; + lines: 11; + cycle: true; + fixed-height: true; + fixed-columns: false; + expand: false; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} +dummy { + spacing: 0em; + padding: 0em; + background-color: transparent; +} + + +// Elements // +element { + enabled: true; + padding: 0.5em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-text { + vertical-align: 0.0; + horizontal-align: 0.0; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/.config/rofi/backup/notification.rasi b/.config/rofi/backup/notification.rasi new file mode 100644 index 0000000..22924d1 --- /dev/null +++ b/.config/rofi/backup/notification.rasi @@ -0,0 +1,91 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; + drun-display-format: "{name}"; + font: "JetBrainsMono Nerd Font 9"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + enabled: true; + fullscreen: false; + width: 30em; + height: 25.5em; + transparency: "real"; + cursor: "default"; + spacing: 0em; + padding: 0em; + border: 0.2em; + border-radius: 0.1em; + border-color: @main-br; + background-color: @main-bg; +} + +mainbox { + enabled: true; + orientation: vertical; + children: [ "frame" ]; + background-color: #2d2a2e; +} +frame { + enabled: true; + orientation: vertical; + children: [ "dummy2" , "listview" , "dummy2" ]; + background-color: #2d2a2e; +} + + +// Lists // +listview { + enabled: true; + spacing: 0em; + padding: 0em; + columns: 1; + lines: 4; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + expand: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: transparent; +} +dummy2 { + spacing: 0em; + padding: 0em; + background-color: transparent; +} + + +// Elements // +element { + enabled: true; + spacing: 1em; + padding: 1em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; + border-radius: 0em; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + enabled: false; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/.config/rofi/backup/quickapps.rasi b/.config/rofi/backup/quickapps.rasi new file mode 100644 index 0000000..75941be --- /dev/null +++ b/.config/rofi/backup/quickapps.rasi @@ -0,0 +1,74 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0em; + orientation: horizontal; + children: [ "listbox" ]; + background-color: transparent; +} + + +// Lists // +listbox { + padding: 0em; + spacing: 0em; + orientation: horizontal; + children: [ "listview" ]; + background-color: transparent; +} +listview { + padding: 2px; + spacing: 0em; + enabled: true; + columns: 1; + cycle: true; + dynamic: true; + scrollbar: false; + flow: horizontal; + reverse: false; + fixed-height: false; + fixed-columns: false; + cursor: "default"; + background-color: transparent; +} + + +// Elements // +element { + orientation: vertical; + enabled: true; + spacing: 0em; + padding: 0em; + cursor: pointer; + background-color: transparent; +} +element selected.normal { + background-color: @main-fg; +} +element-icon { + cursor: inherit; + background-color: transparent; +} +element-text { + enabled: false; +} + diff --git a/.config/rofi/backup/selector.rasi b/.config/rofi/backup/selector.rasi new file mode 100644 index 0000000..6eda76d --- /dev/null +++ b/.config/rofi/backup/selector.rasi @@ -0,0 +1,87 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; + drun-display-format: "{name}"; + font: "JetBrainsMono Nerd Font 10"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + enabled: true; + fullscreen: false; + transparency: "real"; + cursor: "default"; + spacing: 0em; + padding: 0em; + border: 0em; + border-radius: 0em; + border-color: transparent; + background-color: @main-bg; +} + +mainbox { + enabled: true; + orientation: horizontal; + children: [ "dummy", "frame", "dummy" ]; + background-color: transparent; +} +frame { + children: [ "listview" ]; + background-color: transparent; +} + + +// Lists // +listview { + enabled: true; + spacing: 4em; + padding: 4em; + columns: 10; + lines: 1; + dynamic: false; + fixed-height: false; + fixed-columns: true; + reverse: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} +dummy { + width: 2em; + expand: false; + background-color: transparent; +} + + +// Elements // +element { + enabled: true; + spacing: 0em; + padding: 0em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + cursor: inherit; + size: 10em; + background-color: transparent; + text-color: inherit; + expand: false; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/.config/rofi/backup/theme.rasi b/.config/rofi/backup/theme.rasi new file mode 100644 index 0000000..1da48bd --- /dev/null +++ b/.config/rofi/backup/theme.rasi @@ -0,0 +1,10 @@ +* { + main-bg: #282828FF; + main-fg: #CBCED3FF; + main-br: #EBDBB2FF; + main-ex: #85A583FF; + select-bg: #475437FF; + select-fg: #B5CC97FF; + separatorcolor: transparent; + border-color: transparent; +} diff --git a/.config/rofi/backup/wallbash.rasi b/.config/rofi/backup/wallbash.rasi new file mode 100644 index 0000000..ca2ffc7 --- /dev/null +++ b/.config/rofi/backup/wallbash.rasi @@ -0,0 +1,82 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; + drun-display-format: "{name}"; + font: "JetBrainsMono Nerd Font 9"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + enabled: true; + fullscreen: false; + width: 40em; + height: 20em; + transparency: "real"; + cursor: "default"; + spacing: 0em; + padding: 0em; + border: 1em; + border-radius: 0em; + border-color: #00000003; + background-color: @main-bg; + background-image: url("~/.config/rofi/assets/wallbash_mode.png", width); +} +mainbox { + enabled: true; + orientation: vertical; + children: [ "dummy" , "listview" ]; + background-color: transparent; +} + + +// Lists // +listview { + enabled: true; + spacing: 1em; + padding: 1em 2em 2.5em 2em; + columns: 4; + lines: 1; + dynamic: false; + fixed-height: false; + fixed-columns: true; + reverse: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} +dummy { + padding: 4em; + expand: false; + background-color: transparent; +} + + +// Elements // +element { + enabled: true; + spacing: 0em; + padding: 1.5em; + cursor: pointer; + background-color: @main-bg; + text-color: @main-fg; + border-radius: 0em; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + enabled: false; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/.config/rofi/notification.rasi b/.config/rofi/notification.rasi index b0f1621..e737b5f 100644 --- a/.config/rofi/notification.rasi +++ b/.config/rofi/notification.rasi @@ -3,7 +3,7 @@ configuration { modi: "drun"; show-icons: true; drun-display-format: "{name}"; - font: "JetBrainsMono Nerd Font 9"; + font: "JetBrainsMono Nerd Font 10"; } @theme "~/.config/rofi/theme.rasi" @@ -13,35 +13,36 @@ configuration { window { enabled: true; fullscreen: false; - width: 40em; - height: 25.5em; transparency: "real"; cursor: "default"; spacing: 0em; padding: 0em; - border: 0.5em; - border-radius: 1em; - border-color: #686156; - background-color: #2d2a2e; + border: 0.3em; + border-radius: 0.5em; + border-color: @main-br; + background-color: @main-bg; } + mainbox { enabled: true; orientation: vertical; children: [ "frame" ]; - background-color: #2d2a2e; + background-color: @main-bg; } + frame { enabled: true; orientation: vertical; children: [ "dummy2" , "listview" , "dummy2" ]; - background-color: #2d2a2e; + background-color: @main-bg; } + // Lists // listview { enabled: true; spacing: 0em; - padding: 0em; + padding: 0.5em; columns: 1; lines: 4; cycle: true; diff --git a/.config/rofi/selector.rasi b/.config/rofi/selector.rasi index edfda45..9cda39e 100644 --- a/.config/rofi/selector.rasi +++ b/.config/rofi/selector.rasi @@ -22,12 +22,14 @@ window { border-color: transparent; background-color: @main-bg; } + mainbox { enabled: true; orientation: horizontal; children: [ "dummy", "frame", "dummy" ]; background-color: transparent; } + frame { children: [ "listview" ]; background-color: transparent; @@ -49,6 +51,7 @@ listview { background-color: transparent; text-color: @main-fg; } + dummy { width: 2em; expand: false; diff --git a/.config/swaync/bkg/config.json b/.config/swaync/bkg/config.json new file mode 100644 index 0000000..fce9e1f --- /dev/null +++ b/.config/swaync/bkg/config.json @@ -0,0 +1,116 @@ +{ + "$schema": "/etc/xdg/swaync/configSchema.json", + "positionX": "center", + "positionY": "top", + "layer": "overlay", + "control-center-layer": "top", + "layer-shell": true, + "cssPriority": "application", + "control-center-margin-top": 0, + "control-center-margin-bottom": 0, + "control-center-margin-right": 0, + "control-center-margin-left": 0, + "notification-2fa-action": true, + "notification-inline-replies": false, + "notification-icon-size": 64, + "notification-body-image-height": 100, + "notification-body-image-width": 200, + "timeout": 10, + "timeout-low": 5, + "timeout-critical": 0, + "fit-to-screen": false, + "relative-timestamps": true, + "control-center-width": 500, + "control-center-height": 1000, + "notification-window-width": 500, + "keyboard-shortcuts": true, + "image-visibility": "when-available", + "transition-time": 200, + "hide-on-clear": false, + "hide-on-action": true, + "script-fail-notify": true, + "scripts": { + "example-script": { + "exec": "echo 'Do something...'", + "urgency": "Normal" + }, + "example-action-script": { + "exec": "echo 'Do something actionable!'", + "urgency": "Normal", + "run-on": "action" + } + }, + "notification-visibility": { + "example-name": { + "state": "muted", + "urgency": "Low", + "app-name": "Spotify" + } + }, + "widgets": [ + "inhibitors", + "title", + "dnd", + "mpris", + "buttons-grid", + "volume", + "notifications", + "backlight" + ], + "widget-config": { + "title": { + "text": "Notification Center", + "clear-all-button": true, + "button-text": "󰆴 Clear" + }, + "dnd": { + "text": "Do Not Disturb" + }, + "label": { + "max-lines": 1, + "text": "Notification Center" + }, + "mpris": { + "image-size": 50, + "image-radius": 5 + }, + "volume": { + "label": "󰕾", + "show-per-app": true, + "show-per-app-icon": true + }, + "backlight": { + "label": "󰃟" + }, + "buttons-grid": { + "actions": [ + { + "label": "󰌾", + "command": "swaylock-corrupter" + }, + { + "label": "󰍃", + "command": "swaymsg exit" + }, + { + "label": "󰕾", + "command": "pactl set-sink-mute @DEFAULT_SINK@ toggle", + "type": "toggle" + }, + { + "label": "󰍬", + "command": "volumecontrol.sh -i m", + "type": "toggle" + }, + { + "label": "󰖩", + "command": "iwgtk" + }, + { + "label": "󰂯", + "command": "blueman-manager" + } + ] + } + } +} diff --git a/.config/swaync/bkg/configSchema.json b/.config/swaync/bkg/configSchema.json new file mode 100644 index 0000000..8d96c68 --- /dev/null +++ b/.config/swaync/bkg/configSchema.json @@ -0,0 +1,622 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "SwayNotificationCenter JSON schema", + "type": "object", + "additionalProperties": false, + "properties": { + "$schema": { + "type": "string", + "description": "Pointer to the schema against which this document should be validated." + }, + "positionX": { + "type": "string", + "description": "Horizontal position of control center and notification window", + "default": "right", + "enum": ["right", "left", "center"] + }, + "layer": { + "type": "string", + "description": "Layer of notification window", + "default": "overlay", + "enum": ["background", "bottom", "top", "overlay"] + }, + "layer-shell": { + "type": "boolean", + "description": "Wether or not the windows should be opened as layer-shell surfaces. Note: Requires swaync restart to apply", + "default": true + }, + "cssPriority": { + "type": "string", + "description": "Which GTK priority to use when loading the default and user CSS files. Pick \"user\" to override XDG_CONFIG_HOME/gtk-3.0/gtk.css", + "default": "application", + "enum": ["application", "user"] + }, + "positionY": { + "type": "string", + "description": "Vertical position of control center and notification window", + "default": "top", + "enum": ["top", "center", "bottom"] + }, + "control-center-positionX": { + "type": "string", + "description": "Optional: Horizontal position of the control center. Supersedes positionX if not set to `none`", + "default": "none", + "enum": ["right", "left", "center", "none"] + }, + "control-center-positionY": { + "type": "string", + "description": "Optional: Vertical position of the control center. Supersedes positionY if not set to `none`", + "default": "none", + "enum": ["top", "bottom", "none"] + }, + "control-center-margin-top": { + "type": "integer", + "description": "The margin (in pixels) at the top of the control center. 0 to disable", + "default": 0 + }, + "control-center-margin-bottom": { + "type": "integer", + "description": "The margin (in pixels) at the bottom of the control center. 0 to disable", + "default": 0 + }, + "control-center-margin-right": { + "type": "integer", + "description": "The margin (in pixels) at the right of the control center. 0 to disable", + "default": 0 + }, + "control-center-margin-left": { + "type": "integer", + "description": "The margin (in pixels) at the left of the control center. 0 to disable", + "default": 0 + }, + "control-center-layer": { + "type": "string", + "description": "Layer of control center window", + "default": "none", + "enum": ["background", "bottom", "top", "overlay", "none"] + }, + "control-center-exclusive-zone": { + "type": "boolean", + "description": "Whether or not the control center should follow the compositors exclusive zones. An example would be setting it to \"false\" to cover your panel/dock.", + "default": true + }, + "notification-2fa-action": { + "type": "boolean", + "description": "If each notification should display a 'COPY \"1234\"' action", + "default": true + }, + "notification-inline-replies": { + "type": "boolean", + "description": "If notifications should display a text field to reply if the sender requests it. NOTE: Replying in popup notifications is only available if the compositor supports GTK Layer-Shell ON_DEMAND keyboard interactivity.", + "default": false + }, + "notification-icon-size": { + "type": "integer", + "description": "The notification icon size (in pixels). The app icon size is 1/3", + "default": 64, + "minimum": 16 + }, + "notification-body-image-height": { + "type": "integer", + "description": "The notification body image height (in pixels)", + "default": 100, + "minimum": 100 + }, + "notification-body-image-width": { + "type": "integer", + "description": "The notification body image width (in pixels)", + "default": 200, + "minimum": 200 + }, + "timeout": { + "type": "integer", + "description": "The notification timeout for notifications with normal priority", + "default": 10 + }, + "timeout-low": { + "type": "integer", + "description": "The notification timeout for notifications with low priority", + "default": 5 + }, + "timeout-critical": { + "type": "integer", + "description": "The notification timeout for notifications with critical priority. 0 to disable", + "default": 0 + }, + "notification-window-width": { + "type": "integer", + "description": "Width of the notification in pixels", + "default": 500 + }, + "fit-to-screen": { + "type": "boolean", + "description": "If the control center should expand to both edges of the screen", + "default": true + }, + "relative-timestamps": { + "type": "boolean", + "description": "Display notification timestamps relative to now e.g. \"26 minutes ago\". If false, a local iso8601-formatted absolute timestamp is displayed.", + "default": true + }, + "control-center-height": { + "type": "integer", + "description": "Height of the control center in pixels. Ignored when 'fit-to-screen' is set to 'true'", + "default": 600, + "minimum": 300 + }, + "control-center-width": { + "type": "integer", + "description": "Width of the control center in pixels", + "default": 500, + "minimum": 300 + }, + "keyboard-shortcuts": { + "type": "boolean", + "description": "If control center should use keyboard shortcuts", + "default": true + }, + "image-visibility": { + "type": "string", + "description": "The notification image visibility when no icon is available.", + "default": "when-available", + "enum": ["always", "when-available", "never"] + }, + "transition-time": { + "type": "integer", + "description": "The notification animation duration. 0 to disable", + "default": 200 + }, + "hide-on-clear": { + "type": "boolean", + "description": "Hides the control center after pressing \"Clear All\"", + "default": false + }, + "hide-on-action": { + "type": "boolean", + "description": "Hides the control center when clicking on notification action", + "default": true + }, + "script-fail-notify": { + "type": "boolean", + "description": "Sends a notification if a script fails to run", + "default": true + }, + "scripts": { + "type": "object", + "description": "Which scripts to check and potentially run for every notification. If the notification doesn't include one of the properties, that property will be ignored. All properties (except for exec) use regex. If all properties match the given notification, the script will be run. Only the first matching script will be run.", + "minProperties": 1, + "additionalProperties": false, + "patternProperties": { + "^.{1,}$": { + "type": "object", + "description": "Your script object.", + "required": ["exec"], + "minProperties": 2, + "additionalProperties": false, + "properties": { + "exec": { + "type": "string", + "description": "The script to run. Can also run regular shell commands." + }, + "app-name": { + "type": "string", + "description": "The app-name. Uses Regex." + }, + "desktop-entry": { + "type": "string", + "description": "The desktop-entry. Uses Regex." + }, + "summary": { + "type": "string", + "description": "The summary of the notification. Uses Regex." + }, + "body": { + "type": "string", + "description": "The body of the notification. Uses Regex." + }, + "urgency": { + "type": "string", + "description": "The urgency of the notification.", + "default": "Normal", + "enum": ["Low", "Normal", "Critical"] + }, + "category": { + "type": "string", + "description": "Which category the notification belongs to. Uses Regex." + }, + "run-on": { + "type": "string", + "description": "Whether to run the script on an action being activated, or when the notification is received.", + "enum": ["action", "receive"], + "default": "receive" + } + } + } + } + }, + "notification-visibility": { + "type": "object", + "description": "Set the visibility of each incoming notification. If the notification doesn't include one of the properties, that property will be ignored. All properties (except for state) use regex. If all properties match the given notification, the notification will be follow the provided state. Only the first matching object will be used.", + "minProperties": 1, + "additionalProperties": false, + "patternProperties": { + "^.{1,}$": { + "type": "object", + "description": "Your script object.", + "required": ["state"], + "minProperties": 2, + "additionalProperties": false, + "properties": { + "state": { + "type": "string", + "description": "The notification visibility state.", + "default": "enabled", + "enum": ["ignored", "muted", "enabled", "transient"] + }, + "app-name": { + "type": "string", + "description": "The app-name. Uses Regex." + }, + "desktop-entry": { + "type": "string", + "description": "The desktop-entry. Uses Regex." + }, + "summary": { + "type": "string", + "description": "The summary of the notification. Uses Regex." + }, + "body": { + "type": "string", + "description": "The body of the notification. Uses Regex." + }, + "urgency": { + "type": "string", + "description": "The urgency of the notification.", + "default": "Normal", + "enum": ["Low", "Normal", "Critical"] + }, + "override-urgency": { + "type": "string", + "description": "The new urgency of the notification (optional)", + "default": "unset", + "enum": ["unset", "low", "normal", "critical"] + }, + "category": { + "type": "string", + "description": "Which category the notification belongs to. Uses Regex." + } + } + } + } + }, + "widgets": { + "type": "array", + "description": "Which order and which widgets to display. If the \"notifications\" widget isn't specified, it will be placed at the bottom.", + "default": ["inhibitors", "title", "dnd", "notifications"], + "items": { + "type": "string", + "$comment": "Sadly can't use regex and enums at the same time. Fix in the future?", + "pattern": "^[a-zA-Z0-9_-]{1,}(#[a-zA-Z0-9_-]{1,}){0,1}?$" + } + }, + "widget-config": { + "type": "object", + "description": "Configure specific widget properties.", + "additionalProperties": false, + "$comment": "New widgets go here in \"patternProperties\" ↓", + "patternProperties": { + "^title(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$comment": "References the widget structure from \"widgets\" below", + "$ref": "#/widgets/title" + }, + "^dnd(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/dnd" + }, + "^label(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/label" + }, + "^mpris(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/mpris" + }, + "^buttons-grid(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/buttons-grid" + }, + "^menubar(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/menubar" + }, + "^volume(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/volume" + }, + "^backlight(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/backlight" + }, + "^inhibitors(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$comment": "References the widget structure from \"widgets\" below", + "$ref": "#/widgets/inhibitors" + } + } + } + }, + "widgets": { + "$comment": "New widgets go here", + "title": { + "type": "object", + "description": "Control Center Title Widget", + "additionalProperties": false, + "properties": { + "text": { + "type": "string", + "description": "The title of the widget", + "default": "Notifications" + }, + "clear-all-button": { + "type": "boolean", + "description": "Wether to display a \"Clear All\" button", + "default": true + }, + "button-text": { + "type": "string", + "description": "\"Clear All\" button text", + "default": "Clear All" + } + } + }, + "dnd": { + "type": "object", + "description": "Control Center Do Not Disturb Widget", + "additionalProperties": false, + "properties": { + "text": { + "type": "string", + "description": "The title of the widget", + "default": "Do Not Disturb" + } + } + }, + "label": { + "type": "object", + "description": "A generic widget that allows the user to add custom text", + "additionalProperties": false, + "properties": { + "text": { + "type": "string", + "description": "The text content of the widget", + "default": "Label Text" + }, + "max-lines": { + "type": "integer", + "description": "The maximum lines", + "default": 5 + } + } + }, + "mpris": { + "type": "object", + "description": "A widget that displays multiple music players", + "additionalProperties": false, + "properties": { + "image-size": { + "type": "integer", + "description": "The size of the album art", + "default": 96 + }, + "image-radius": { + "type": "integer", + "description": "The border radius of the album art. Will be overriden by setting the border-radius in the style.css for the \".widget-mpris-album-art\" class", + + "default": 12 + }, + "blur": { + "type": "bool", + "description": "Appy the artwork as the MPRIS background and blur it", + "default": true + } + } + }, + "buttons-grid": { + "type": "object", + "description": "A widget to add a grid of buttons that execute shell commands", + "additionalProperties": false, + "properties": { + "actions": { + "type": "array", + "description": "A list of actions containing a label and a command", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "Text to be displayed in button", + "default": "label" + }, + "command": { + "type": "string", + "description": "Command to be executed on click", + "default": "" + }, + "type": { + "type": "string", + "description": "Type of the button; toggle buttons receive the .active css class and an env variable 'SWAYNC_TOGGLE_STATE' is set. See example in the default config.json", + "default": "normal", + "enum": ["normal", "toggle"] + }, + "update-command": { + "type": "string", + "description": "Command to be executed on visibility change of cc to update the active state of the toggle button (should echo true or false)", + "default": "" + }, + "active": { + "type": "bool", + "description": "Wether the toggle button is active as default or not", + "default": false + } + } + } + } + } + }, + "menubar": { + "type": "object", + "description": "A bar that contains action-buttons and buttons to open a dropdown with action-buttons", + "additionalProperties": false, + "patternProperties": { + "^menu(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "type": "object", + "description": "A button that opens a dropdown with action-buttons", + "additionalProperties": false, + "properties": { + "label": { + "type": "string", + "description": "Text to be displayed in button", + "default": "Menu" + }, + "position": { + "type": "string", + "description": "Horizontal position of the button in the bar", + "default": "right", + "enum": ["right", "left"] + }, + "animation-type": { + "type": "string", + "default": "slide_down", + "description": "Animation type for menu", + "enum": ["slide_down", "slide_up", "none"] + }, + "animation-duration":{ + "type": "integer", + "default": 250, + "description": "Duration of animation in milliseconds" + }, + "actions": { + "$ref" : "#/widgets/buttons-grid/properties/actions" + } + } + }, + "^buttons(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "type": "object", + "description": "A list of action-buttons to be displayed in the topbar", + "additionalProperties": false, + "properties": { + "position": { + "type": "string", + "description": "Horizontal position of the button in the bar", + "default": "right", + "enum": ["right", "left"] + }, + "actions": { + "$ref" : "#/widgets/buttons-grid/properties/actions" + } + } + } + } + }, + "volume": { + "type": "object", + "description": "Slider to control pulse volume", + "additionalProperties": false, + "properties": { + "label": { + "type": "string", + "description": "Text displayed in front of the volume slider", + "default": "Volume" + }, + "show-per-app": { + "type": "boolean", + "default": false, + "description": "Show per app volume control" + }, + "show-per-app-icon": { + "type": "boolean", + "default": true, + "description": "Show application icon in per app control" + }, + "show-per-app-label": { + "type": "boolean", + "default": false, + "description": "Show application name in per app control" + }, + "empty-list-label": { + "type": "string", + "default": "No active sink input", + "description": "Text displayed when there are not active sink inputs" + }, + "expand-button-label": { + "type": "string", + "default": "⇧", + "description": "Label displayed on button to show per app volume control" + }, + "collapse-button-label": { + "type": "string", + "default": "⇩", + "description": "Label displayed on button to hide per app volume control" + }, + "icon-size": { + "type": "integer", + "default": 24, + "description": "Size of the application icon in per app volume control" + }, + "animation-type": { + "type": "string", + "default": "slide_down", + "description": "Animation type for menu", + "enum": ["slide_down", "slide_up", "none"] + }, + "animation-duration":{ + "type": "integer", + "default": 250, + "description": "Duration of animation in milliseconds" + } + } + }, + "backlight": { + "type": "object", + "description": "Slider to control monitor brightness", + "additionalProperties": false, + "properties": { + "label": { + "type": "string", + "description": "Text displayed in front of the backlight slider", + "default": "Brightness" + }, + "device": { + "type": "string", + "description": "Name of monitor (find possible devices using `ls /sys/class/backlight` or `ls /sys/class/leds`)", + "default": "intel_backlight" + }, + "subsystem": { + "type": "string", + "description": "Kernel subsystem for brightness control", + "default": "backlight", + "enum": ["backlight", "leds"] + }, + "min": { + "type": "integer", + "default": 0, + "description": "Lowest possible value for brightness" + } + } + }, + "inhibitors": { + "type": "object", + "description": "Control Center Inhibitors Widget", + "additionalProperties": false, + "properties": { + "text": { + "type": "string", + "description": "The title of the widget", + "default": "Inhibitors" + }, + "clear-all-button": { + "type": "boolean", + "description": "Wether to display a \"Clear All\" button", + "default": true + }, + "button-text": { + "type": "string", + "description": "\"Clear All\" button text", + "default": "Clear All" + } + } + } + } +} diff --git a/.config/swaync/bkg/style.css b/.config/swaync/bkg/style.css new file mode 100644 index 0000000..c851f03 --- /dev/null +++ b/.config/swaync/bkg/style.css @@ -0,0 +1,561 @@ +@define-color cc-bg rgba(26, 27, 38, 1); +@define-color noti-border-color rgba(255, 255, 255, 0.15); +@define-color noti-bg rgb(17, 17, 27); +@define-color noti-bg-darker rgb(43, 43, 57); +@define-color noti-bg-hover rgb(27, 27, 43); +@define-color noti-bg-focus rgba(27, 27, 27, 1); +@define-color noti-close-bg rgba(255, 255, 255, 0.1); +@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15); +@define-color text-color rgba(169, 177, 214, 1); +@define-color text-color-disabled rgb(150, 150, 150); +@define-color bg-selected rgb(0, 128, 255); + + +.notification-row { + outline: none; +} + +.notification-row:focus, .notification-row:hover { + background: @noti-bg-focus; +} + +.notification-row .notification-background { + padding: 6px 12px; +} + +.notification-row .notification-background .close-button { + /* The notification Close Button */ + background: @noti-close-bg; + color: @text-color; + text-shadow: none; + padding: 0; + border-radius: 100%; + margin-top: 5px; + margin-right: 5px; + box-shadow: none; + border: none; + min-width: 24px; + min-height: 24px; +} + +.notification-row .notification-background .close-button:hover { + box-shadow: none; + background: @noti-close-bg-hover; + transition: background 0.15s ease-in-out; + border: none; +} + +.notification-row .notification-background .notification { + /* The actual notification */ + border-radius: 12px; + border: 1px solid @noti-border-color; + transition: background 0.15s ease-in-out; + background: @noti-bg; +} + +.notification-row .notification-background .notification.low { + /* Low Priority Notification */ +} + +.notification-row .notification-background .notification.normal { + /* Normal Priority Notification */ +} + +.notification-row .notification-background .notification.critical { + /* Critical Priority Notification */ +} + +.notification-row .notification-background .notification .notification-action, .notification-row .notification-background .notification .notification-default-action { + padding: 4px; + margin: 0; + box-shadow: none; + background: transparent; + border: none; + color: @text-color; + transition: background 0.15s ease-in-out; +} + +.notification-row .notification-background .notification .notification-action:hover, .notification-row .notification-background .notification .notification-default-action:hover { + -gtk-icon-effect: none; +} + +.notification-row .notification-background .notification .notification-default-action { + /* The large action that also displays the notification summary and body */ + border-radius: 12px; + background: @noti-bg; +} + +.notification-row .notification-background .notification .notification-default-action:not(:only-child) { + /* When alternative actions are visible */ + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content { + background: transparent; + border-radius: 12px; + padding: 4px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .image { + /* Notification Primary Image */ + -gtk-icon-effect: none; + border-radius: 100px; + /* Size in px */ + margin: 4px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .app-icon { + /* Notification app icon (only visible when the primary image is set) */ + -gtk-icon-effect: none; + -gtk-icon-shadow: 0 1px 4px black; + margin: 6px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .summary { + /* Notification summary/title */ + font-size: 16px; + font-weight: bold; + background: transparent; + color: @text-color; + text-shadow: none; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .time { + /* Notification time-ago */ + font-size: 16px; + font-weight: bold; + background: transparent; + color: @text-color; + text-shadow: none; + margin-right: 30px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .body { + /* Notification body */ + font-size: 15px; + font-weight: normal; + background: transparent; + color: @text-color; + text-shadow: none; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content progressbar { + /* The optional notification progress bar */ + margin-top: 4px; +} + + +.notification-row .notification-background .notification .notification-default-action .notification-content .body-image { + /* The "extra" optional bottom notification image */ + margin-top: 4px; + background-color: white; + border-radius: 12px; + -gtk-icon-effect: none; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply { + /* The inline reply section */ + margin-top: 4px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-entry { + background: @noti-bg-darker; + color: @text-color; + caret-color: @text-color; + border: 1px solid @noti-border-color; + border-radius: 12px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button { + margin-left: 4px; + background: @noti-bg; + border: 1px solid @noti-border-color; + border-radius: 12px; + color: @text-color; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:disabled { + background: initial; + color: @text-color-disabled; + border: 1px solid @noti-border-color; + border-color: transparent; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:hover { + background: @noti-bg-hover; +} + +.notification-row .notification-background .notification .notification-action { + /* The alternative actions below the default action */ + background: @noti-bg-darker; +} + + + + +.notification-row .notification-background .notification .notification-action:first-child { + /* add bottom border radius to eliminate clipping */ + border-bottom-left-radius: 12px; +} + +.notification-row .notification-background .notification .notification-action:last-child { + border-bottom-right-radius: 12px; + border-right: none; +} + +.notification-group { + /* Styling only for Grouped Notifications */ +} + +.notification-group.low { + /* Low Priority Group */ +} + +.notification-group.normal { + /* Low Priority Group */ +} + +.notification-group.critical { + /* Low Priority Group */ +} + +.notification-group .notification-group-buttons, .notification-group .notification-group-headers { + margin: 0 16px; + color: @text-color; + min-height: 100px; +} + +.notification-group .notification-group-headers { + /* Notification Group Headers */ +} + +.notification-group .notification-group-headers .notification-group-icon { + color: @text-color; +} + +.notification-group .notification-group-headers .notification-group-header { + color: @text-color; +} + +.notification-group .notification-group-buttons { + /* Notification Group Buttons */ +} + +.notification-group.collapsed .notification-row .notification { + background-color: @noti-bg-opaque; + min-height: 100px; +} + +.notification-group.collapsed .notification-row:not(:last-child) { + /* Top notification in stack */ + /* Set lower stacked notifications opacity to 0 */ +} + +.notification-group.collapsed .notification-row:not(:last-child) .notification-action, +.notification-group.collapsed .notification-row:not(:last-child) .notification-default-action { + opacity: 0; +} + +.notification-group.collapsed:hover .notification-row:not(:only-child) .notification { + background-color: @noti-bg-hover-opaque; +} + +.control-center { + /* The Control Center which contains the old notifications + widgets */ + background: @cc-bg; + color: @text-color; + border-radius: 12px; +} + +.control-center .control-center-list-placeholder { + /* The placeholder when there are no notifications */ + opacity: 0.5; +} + +.control-center .control-center-list { + /* List of notifications */ + background: transparent; +} + +.control-center .control-center-list .notification { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7), 0 2px 6px 2px rgba(0, 0, 0, 0.3); +} + +.control-center .control-center-list .notification .notification-default-action, +.control-center .control-center-list .notification .notification-action { + transition: opacity 400ms ease-in-out, background 0.15s ease-in-out; +} + +.control-center .control-center-list .notification .notification-default-action:hover, +.control-center .control-center-list .notification .notification-action:hover { + background-color: @noti-bg-hover; +} + +.blank-window { + /* Window behind control center and on all other monitors */ + background: transparent; +} + +.floating-notifications { + background: transparent; +} + +.floating-notifications .notification { + box-shadow: none; +} + +/*** Widgets ***/ +/* Title widget */ +.widget-title { + color: @text-color; + margin: 8px; + font-size: 1.5rem; + font-family: JetBrainsMono NFM SemiBold; +} + +.widget-title > button { + font-size: initial; + color: @text-color; + text-shadow: none; + background: @noti-bg; + border: 1px solid @noti-border-color; + box-shadow: none; + border-radius: 12px; +} + +.widget-title > button:hover { + background: @noti-bg-hover; +} + +/* DND widget */ +.widget-dnd { + color: @text-color; + margin: 8px; + font-size: 1.5rem; +} + +.widget-dnd > switch { + font-size: initial; + border-radius: 12px; + background: @noti-bg; + border: 1px solid @noti-border-color; + box-shadow: none; +} + +.widget-dnd > switch:checked { + background: @bg-selected; +} + +.widget-dnd > switch slider { + background: @noti-bg-hover; + border-radius: 12px; +} + +/* Label widget */ +.widget-label { + margin: 8px; +} + +.widget-label > label { + font-size: 1.1rem; +} + +/* Mpris widget */ +@define-color mpris-album-art-overlay rgba(0, 0, 0, 0.55); +@define-color mpris-button-hover rgba(0, 0, 0, 0.50); +.widget-mpris { + /* The parent to all players */ + margin-top: 20px +} + +.widget-mpris .widget-mpris-player { + padding: 8px; + padding: 16px; + margin: 16px 20px; + background-color: @mpris-album-art-overlay; + border-radius: 12px; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75); +} + +.widget-mpris .widget-mpris-player button:hover { + /* The media player buttons (play, pause, next, etc...) */ + background: @noti-bg-hover; +} + +.widget-mpris .widget-mpris-player .widget-mpris-album-art { + border-radius: 12px; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75); +} + +.widget-mpris .widget-mpris-player .widget-mpris-title { + font-weight: bold; + font-size: 1.25rem; +} + +.widget-mpris .widget-mpris-player .widget-mpris-subtitle { + font-size: 1.1rem; +} + +.widget-mpris .widget-mpris-player > box > button { + /* Change player control buttons */ + font-size: 1.5rem; +} + +.widget-mpris .widget-mpris-player > box > button:hover { + background-color: @mpris-button-hover; +} + +.widget-mpris > box > button { + /* Change player side buttons */ + background: @text-color +} + +.widget-mpris > box > button:disabled { + /* Change player side buttons insensitive */ + background: transparent +} + +/* Buttons widget */ +.widget-buttons-grid { + padding: 8px; + margin: 8px; + border-radius: 12px; + background-color: @noti-bg; + font-size: 1.5rem; +} + +.widget-buttons-grid > flowbox > flowboxchild > button { + background: @noti-bg; + border-radius: 12px; +} + +.widget-buttons-grid > flowbox > flowboxchild > button.toggle:checked { + /* style given to the active toggle button */ + background: #FF0000; +} + +/* Menubar widget */ +.widget-menubar > box > .menu-button-bar > button { + border: none; + background: transparent; +} + +/* .AnyName { Name defined in config after # + background-color: @noti-bg; + padding: 8px; + margin: 8px; + border-radius: 12px; +} + +.AnyName>button { + background: transparent; + border: none; +} + +.AnyName>button:hover { + background-color: @noti-bg-hover; +} */ +.topbar-buttons > button { + /* Name defined in config after # */ + border: none; + background: transparent; +} + +/* Volume widget */ +.widget-volume { + background-color: @noti-bg; + padding: 8px; + margin: 8px; + border-radius: 12px; + font-size: 1.5rem; +} + +.widget-volume > box > button { + background: #FF0000; + border: none; +} + +.per-app-volume { + background-color: @noti-bg-alt; + padding: 4px 8px 8px 8px; + margin: 0px 8px 8px 8px; + border-radius: 12px; +} + +/* Backlight widget */ +.widget-backlight { + background-color: @noti-bg; + padding: 8px; + margin: 8px; + border-radius: 12px; +} + +/* Inhibitors widget */ +.widget-inhibitors { + margin: 8px; + font-size: 1.5rem; +} + +.widget-inhibitors > button { + font-size: initial; + color: @text-color; + text-shadow: none; + background: @noti-bg; + border: 1px solid @noti-border-color; + box-shadow: none; + border-radius: 12px; +} + +.widget-inhibitors > button:hover { + background: @noti-bg-hover; +} + +.widget-title { + color: #7aa2f7; + background: @noti-bg-darker; + padding: 5px 10px; + margin: 10px 10px 5px 10px; + font-size: 1.5rem; + border-radius: 5px; +} + +.widget-title > button { + font-size: 1rem; + color: @text-color; + text-shadow: none; + background: @noti-bg; + box-shadow: none; + border-radius: 5px; +} + +.widget-title > button:hover { + background: #f7768e; + color: @cc-bg; +} + +.widget-dnd { + background: @noti-bg-darker; + padding: 5px 10px; + margin: 5px 10px; + border-radius: 5px; + font-size: large; + color: #7aa2f7; + font-family: JetBrainsMono NFM SemiBold; +} + +.widget-dnd > switch { + border-radius: 5px; + background: #7aa2f7; +} + +.widget-dnd > switch:checked { + background: #f7768e; + border: 1px solid #f7768e; +} + +.widget-dnd > switch slider, +.widget-dnd > switch:checked slider { + background: @cc-bg; + border-radius: 5px; +} diff --git a/.config/swaync/bkg2/config.json b/.config/swaync/bkg2/config.json new file mode 100644 index 0000000..2ab02d3 --- /dev/null +++ b/.config/swaync/bkg2/config.json @@ -0,0 +1,108 @@ +{ + "$schema": "/etc/xdg/swaync/configSchema.json", + "positionX": "center", + "positionY": "top", + "layer": "overlay", + "control-center-layer": "top", + "layer-shell": true, + "cssPriority": "application", + "control-center-margin-top": 10, + "control-center-margin-bottom": 0, + "control-center-margin-right": 0, + "control-center-margin-left": 0, + "notification-2fa-action": true, + "notification-inline-replies": false, + "notification-icon-size": 64, + "notification-body-image-height": 100, + "notification-body-image-width": 200, + "timeout": 10, + "timeout-low": 5, + "timeout-critical": 0, + "fit-to-screen": false, + "relative-timestamps": true, + "control-center-width": 500, + "control-center-height": 1000, + "notification-window-width": 500, + "keyboard-shortcuts": true, + "image-visibility": "when-available", + "transition-time": 200, + "hide-on-clear": false, + "hide-on-action": true, + "script-fail-notify": true, + "scripts": { + "example-script": { + "exec": "echo 'Do something...'", + "urgency": "Normal" + }, + "example-action-script": { + "exec": "echo 'Do something actionable!'", + "urgency": "Normal", + "run-on": "action" + } + }, + "notification-visibility": { + "example-name": { + "state": "muted", + "urgency": "Low", + "app-name": "Spotify" + } + }, + "widgets": [ + "inhibitors", + "title", + "dnd", + "mpris", + "buttons-grid", + "volume", + "notifications", + "backlight" + ], + "widget-config": { + "title": { + "text": "Notification Center", + "clear-all-button": true, + "button-text": "󰆴 Clear" + }, + "dnd": { + "text": "Do Not Disturb" + }, + "label": { + "max-lines": 1, + "text": "Notification Center" + }, + "mpris": { + "image-size": 50, + "image-radius": 5 + }, + "volume": { + "label": "󰕾", + "show-per-app": true, + "show-per-app-icon": true + }, + "backlight": { + "label": "󰃟" + }, + "buttons-grid": { + "actions": [ + { + "label": "󰕾", + "command": "pactl set-sink-mute @DEFAULT_SINK@ toggle", + "type": "toggle" + }, + { + "label": "󰍬", + "command": "volumecontrol.sh -i m", + "type": "toggle" + }, + { + "label": "󰖩", + "command": "iwgtk" + }, + { + "label": "󰂯", + "command": "blueman-manager" + } + ] + } + } +} diff --git a/.config/swaync/bkg2/configSchema.json b/.config/swaync/bkg2/configSchema.json new file mode 100644 index 0000000..8d96c68 --- /dev/null +++ b/.config/swaync/bkg2/configSchema.json @@ -0,0 +1,622 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "SwayNotificationCenter JSON schema", + "type": "object", + "additionalProperties": false, + "properties": { + "$schema": { + "type": "string", + "description": "Pointer to the schema against which this document should be validated." + }, + "positionX": { + "type": "string", + "description": "Horizontal position of control center and notification window", + "default": "right", + "enum": ["right", "left", "center"] + }, + "layer": { + "type": "string", + "description": "Layer of notification window", + "default": "overlay", + "enum": ["background", "bottom", "top", "overlay"] + }, + "layer-shell": { + "type": "boolean", + "description": "Wether or not the windows should be opened as layer-shell surfaces. Note: Requires swaync restart to apply", + "default": true + }, + "cssPriority": { + "type": "string", + "description": "Which GTK priority to use when loading the default and user CSS files. Pick \"user\" to override XDG_CONFIG_HOME/gtk-3.0/gtk.css", + "default": "application", + "enum": ["application", "user"] + }, + "positionY": { + "type": "string", + "description": "Vertical position of control center and notification window", + "default": "top", + "enum": ["top", "center", "bottom"] + }, + "control-center-positionX": { + "type": "string", + "description": "Optional: Horizontal position of the control center. Supersedes positionX if not set to `none`", + "default": "none", + "enum": ["right", "left", "center", "none"] + }, + "control-center-positionY": { + "type": "string", + "description": "Optional: Vertical position of the control center. Supersedes positionY if not set to `none`", + "default": "none", + "enum": ["top", "bottom", "none"] + }, + "control-center-margin-top": { + "type": "integer", + "description": "The margin (in pixels) at the top of the control center. 0 to disable", + "default": 0 + }, + "control-center-margin-bottom": { + "type": "integer", + "description": "The margin (in pixels) at the bottom of the control center. 0 to disable", + "default": 0 + }, + "control-center-margin-right": { + "type": "integer", + "description": "The margin (in pixels) at the right of the control center. 0 to disable", + "default": 0 + }, + "control-center-margin-left": { + "type": "integer", + "description": "The margin (in pixels) at the left of the control center. 0 to disable", + "default": 0 + }, + "control-center-layer": { + "type": "string", + "description": "Layer of control center window", + "default": "none", + "enum": ["background", "bottom", "top", "overlay", "none"] + }, + "control-center-exclusive-zone": { + "type": "boolean", + "description": "Whether or not the control center should follow the compositors exclusive zones. An example would be setting it to \"false\" to cover your panel/dock.", + "default": true + }, + "notification-2fa-action": { + "type": "boolean", + "description": "If each notification should display a 'COPY \"1234\"' action", + "default": true + }, + "notification-inline-replies": { + "type": "boolean", + "description": "If notifications should display a text field to reply if the sender requests it. NOTE: Replying in popup notifications is only available if the compositor supports GTK Layer-Shell ON_DEMAND keyboard interactivity.", + "default": false + }, + "notification-icon-size": { + "type": "integer", + "description": "The notification icon size (in pixels). The app icon size is 1/3", + "default": 64, + "minimum": 16 + }, + "notification-body-image-height": { + "type": "integer", + "description": "The notification body image height (in pixels)", + "default": 100, + "minimum": 100 + }, + "notification-body-image-width": { + "type": "integer", + "description": "The notification body image width (in pixels)", + "default": 200, + "minimum": 200 + }, + "timeout": { + "type": "integer", + "description": "The notification timeout for notifications with normal priority", + "default": 10 + }, + "timeout-low": { + "type": "integer", + "description": "The notification timeout for notifications with low priority", + "default": 5 + }, + "timeout-critical": { + "type": "integer", + "description": "The notification timeout for notifications with critical priority. 0 to disable", + "default": 0 + }, + "notification-window-width": { + "type": "integer", + "description": "Width of the notification in pixels", + "default": 500 + }, + "fit-to-screen": { + "type": "boolean", + "description": "If the control center should expand to both edges of the screen", + "default": true + }, + "relative-timestamps": { + "type": "boolean", + "description": "Display notification timestamps relative to now e.g. \"26 minutes ago\". If false, a local iso8601-formatted absolute timestamp is displayed.", + "default": true + }, + "control-center-height": { + "type": "integer", + "description": "Height of the control center in pixels. Ignored when 'fit-to-screen' is set to 'true'", + "default": 600, + "minimum": 300 + }, + "control-center-width": { + "type": "integer", + "description": "Width of the control center in pixels", + "default": 500, + "minimum": 300 + }, + "keyboard-shortcuts": { + "type": "boolean", + "description": "If control center should use keyboard shortcuts", + "default": true + }, + "image-visibility": { + "type": "string", + "description": "The notification image visibility when no icon is available.", + "default": "when-available", + "enum": ["always", "when-available", "never"] + }, + "transition-time": { + "type": "integer", + "description": "The notification animation duration. 0 to disable", + "default": 200 + }, + "hide-on-clear": { + "type": "boolean", + "description": "Hides the control center after pressing \"Clear All\"", + "default": false + }, + "hide-on-action": { + "type": "boolean", + "description": "Hides the control center when clicking on notification action", + "default": true + }, + "script-fail-notify": { + "type": "boolean", + "description": "Sends a notification if a script fails to run", + "default": true + }, + "scripts": { + "type": "object", + "description": "Which scripts to check and potentially run for every notification. If the notification doesn't include one of the properties, that property will be ignored. All properties (except for exec) use regex. If all properties match the given notification, the script will be run. Only the first matching script will be run.", + "minProperties": 1, + "additionalProperties": false, + "patternProperties": { + "^.{1,}$": { + "type": "object", + "description": "Your script object.", + "required": ["exec"], + "minProperties": 2, + "additionalProperties": false, + "properties": { + "exec": { + "type": "string", + "description": "The script to run. Can also run regular shell commands." + }, + "app-name": { + "type": "string", + "description": "The app-name. Uses Regex." + }, + "desktop-entry": { + "type": "string", + "description": "The desktop-entry. Uses Regex." + }, + "summary": { + "type": "string", + "description": "The summary of the notification. Uses Regex." + }, + "body": { + "type": "string", + "description": "The body of the notification. Uses Regex." + }, + "urgency": { + "type": "string", + "description": "The urgency of the notification.", + "default": "Normal", + "enum": ["Low", "Normal", "Critical"] + }, + "category": { + "type": "string", + "description": "Which category the notification belongs to. Uses Regex." + }, + "run-on": { + "type": "string", + "description": "Whether to run the script on an action being activated, or when the notification is received.", + "enum": ["action", "receive"], + "default": "receive" + } + } + } + } + }, + "notification-visibility": { + "type": "object", + "description": "Set the visibility of each incoming notification. If the notification doesn't include one of the properties, that property will be ignored. All properties (except for state) use regex. If all properties match the given notification, the notification will be follow the provided state. Only the first matching object will be used.", + "minProperties": 1, + "additionalProperties": false, + "patternProperties": { + "^.{1,}$": { + "type": "object", + "description": "Your script object.", + "required": ["state"], + "minProperties": 2, + "additionalProperties": false, + "properties": { + "state": { + "type": "string", + "description": "The notification visibility state.", + "default": "enabled", + "enum": ["ignored", "muted", "enabled", "transient"] + }, + "app-name": { + "type": "string", + "description": "The app-name. Uses Regex." + }, + "desktop-entry": { + "type": "string", + "description": "The desktop-entry. Uses Regex." + }, + "summary": { + "type": "string", + "description": "The summary of the notification. Uses Regex." + }, + "body": { + "type": "string", + "description": "The body of the notification. Uses Regex." + }, + "urgency": { + "type": "string", + "description": "The urgency of the notification.", + "default": "Normal", + "enum": ["Low", "Normal", "Critical"] + }, + "override-urgency": { + "type": "string", + "description": "The new urgency of the notification (optional)", + "default": "unset", + "enum": ["unset", "low", "normal", "critical"] + }, + "category": { + "type": "string", + "description": "Which category the notification belongs to. Uses Regex." + } + } + } + } + }, + "widgets": { + "type": "array", + "description": "Which order and which widgets to display. If the \"notifications\" widget isn't specified, it will be placed at the bottom.", + "default": ["inhibitors", "title", "dnd", "notifications"], + "items": { + "type": "string", + "$comment": "Sadly can't use regex and enums at the same time. Fix in the future?", + "pattern": "^[a-zA-Z0-9_-]{1,}(#[a-zA-Z0-9_-]{1,}){0,1}?$" + } + }, + "widget-config": { + "type": "object", + "description": "Configure specific widget properties.", + "additionalProperties": false, + "$comment": "New widgets go here in \"patternProperties\" ↓", + "patternProperties": { + "^title(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$comment": "References the widget structure from \"widgets\" below", + "$ref": "#/widgets/title" + }, + "^dnd(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/dnd" + }, + "^label(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/label" + }, + "^mpris(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/mpris" + }, + "^buttons-grid(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/buttons-grid" + }, + "^menubar(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/menubar" + }, + "^volume(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/volume" + }, + "^backlight(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/backlight" + }, + "^inhibitors(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$comment": "References the widget structure from \"widgets\" below", + "$ref": "#/widgets/inhibitors" + } + } + } + }, + "widgets": { + "$comment": "New widgets go here", + "title": { + "type": "object", + "description": "Control Center Title Widget", + "additionalProperties": false, + "properties": { + "text": { + "type": "string", + "description": "The title of the widget", + "default": "Notifications" + }, + "clear-all-button": { + "type": "boolean", + "description": "Wether to display a \"Clear All\" button", + "default": true + }, + "button-text": { + "type": "string", + "description": "\"Clear All\" button text", + "default": "Clear All" + } + } + }, + "dnd": { + "type": "object", + "description": "Control Center Do Not Disturb Widget", + "additionalProperties": false, + "properties": { + "text": { + "type": "string", + "description": "The title of the widget", + "default": "Do Not Disturb" + } + } + }, + "label": { + "type": "object", + "description": "A generic widget that allows the user to add custom text", + "additionalProperties": false, + "properties": { + "text": { + "type": "string", + "description": "The text content of the widget", + "default": "Label Text" + }, + "max-lines": { + "type": "integer", + "description": "The maximum lines", + "default": 5 + } + } + }, + "mpris": { + "type": "object", + "description": "A widget that displays multiple music players", + "additionalProperties": false, + "properties": { + "image-size": { + "type": "integer", + "description": "The size of the album art", + "default": 96 + }, + "image-radius": { + "type": "integer", + "description": "The border radius of the album art. Will be overriden by setting the border-radius in the style.css for the \".widget-mpris-album-art\" class", + + "default": 12 + }, + "blur": { + "type": "bool", + "description": "Appy the artwork as the MPRIS background and blur it", + "default": true + } + } + }, + "buttons-grid": { + "type": "object", + "description": "A widget to add a grid of buttons that execute shell commands", + "additionalProperties": false, + "properties": { + "actions": { + "type": "array", + "description": "A list of actions containing a label and a command", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "Text to be displayed in button", + "default": "label" + }, + "command": { + "type": "string", + "description": "Command to be executed on click", + "default": "" + }, + "type": { + "type": "string", + "description": "Type of the button; toggle buttons receive the .active css class and an env variable 'SWAYNC_TOGGLE_STATE' is set. See example in the default config.json", + "default": "normal", + "enum": ["normal", "toggle"] + }, + "update-command": { + "type": "string", + "description": "Command to be executed on visibility change of cc to update the active state of the toggle button (should echo true or false)", + "default": "" + }, + "active": { + "type": "bool", + "description": "Wether the toggle button is active as default or not", + "default": false + } + } + } + } + } + }, + "menubar": { + "type": "object", + "description": "A bar that contains action-buttons and buttons to open a dropdown with action-buttons", + "additionalProperties": false, + "patternProperties": { + "^menu(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "type": "object", + "description": "A button that opens a dropdown with action-buttons", + "additionalProperties": false, + "properties": { + "label": { + "type": "string", + "description": "Text to be displayed in button", + "default": "Menu" + }, + "position": { + "type": "string", + "description": "Horizontal position of the button in the bar", + "default": "right", + "enum": ["right", "left"] + }, + "animation-type": { + "type": "string", + "default": "slide_down", + "description": "Animation type for menu", + "enum": ["slide_down", "slide_up", "none"] + }, + "animation-duration":{ + "type": "integer", + "default": 250, + "description": "Duration of animation in milliseconds" + }, + "actions": { + "$ref" : "#/widgets/buttons-grid/properties/actions" + } + } + }, + "^buttons(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "type": "object", + "description": "A list of action-buttons to be displayed in the topbar", + "additionalProperties": false, + "properties": { + "position": { + "type": "string", + "description": "Horizontal position of the button in the bar", + "default": "right", + "enum": ["right", "left"] + }, + "actions": { + "$ref" : "#/widgets/buttons-grid/properties/actions" + } + } + } + } + }, + "volume": { + "type": "object", + "description": "Slider to control pulse volume", + "additionalProperties": false, + "properties": { + "label": { + "type": "string", + "description": "Text displayed in front of the volume slider", + "default": "Volume" + }, + "show-per-app": { + "type": "boolean", + "default": false, + "description": "Show per app volume control" + }, + "show-per-app-icon": { + "type": "boolean", + "default": true, + "description": "Show application icon in per app control" + }, + "show-per-app-label": { + "type": "boolean", + "default": false, + "description": "Show application name in per app control" + }, + "empty-list-label": { + "type": "string", + "default": "No active sink input", + "description": "Text displayed when there are not active sink inputs" + }, + "expand-button-label": { + "type": "string", + "default": "⇧", + "description": "Label displayed on button to show per app volume control" + }, + "collapse-button-label": { + "type": "string", + "default": "⇩", + "description": "Label displayed on button to hide per app volume control" + }, + "icon-size": { + "type": "integer", + "default": 24, + "description": "Size of the application icon in per app volume control" + }, + "animation-type": { + "type": "string", + "default": "slide_down", + "description": "Animation type for menu", + "enum": ["slide_down", "slide_up", "none"] + }, + "animation-duration":{ + "type": "integer", + "default": 250, + "description": "Duration of animation in milliseconds" + } + } + }, + "backlight": { + "type": "object", + "description": "Slider to control monitor brightness", + "additionalProperties": false, + "properties": { + "label": { + "type": "string", + "description": "Text displayed in front of the backlight slider", + "default": "Brightness" + }, + "device": { + "type": "string", + "description": "Name of monitor (find possible devices using `ls /sys/class/backlight` or `ls /sys/class/leds`)", + "default": "intel_backlight" + }, + "subsystem": { + "type": "string", + "description": "Kernel subsystem for brightness control", + "default": "backlight", + "enum": ["backlight", "leds"] + }, + "min": { + "type": "integer", + "default": 0, + "description": "Lowest possible value for brightness" + } + } + }, + "inhibitors": { + "type": "object", + "description": "Control Center Inhibitors Widget", + "additionalProperties": false, + "properties": { + "text": { + "type": "string", + "description": "The title of the widget", + "default": "Inhibitors" + }, + "clear-all-button": { + "type": "boolean", + "description": "Wether to display a \"Clear All\" button", + "default": true + }, + "button-text": { + "type": "string", + "description": "\"Clear All\" button text", + "default": "Clear All" + } + } + } + } +} diff --git a/.config/swaync/bkg2/style.css b/.config/swaync/bkg2/style.css new file mode 100644 index 0000000..6cf59d8 --- /dev/null +++ b/.config/swaync/bkg2/style.css @@ -0,0 +1,573 @@ +@define-color cc-bg rgba(26, 27, 38, 1); +@define-color noti-border-color rgba(255, 255, 255, 0.15); +@define-color noti-bg rgb(17, 17, 27); +@define-color noti-bg-darker rgb(43, 43, 57); +@define-color noti-bg-hover rgb(27, 27, 43); +@define-color noti-bg-focus rgba(27, 27, 27, 1); +@define-color noti-close-bg rgba(255, 255, 255, 0.1); +@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15); +@define-color text-color rgba(169, 177, 214, 1); +@define-color text-color-disabled rgb(150, 150, 150); +@define-color bg-selected rgb(0, 128, 255); + +* { + font-family: JetBrainsMono NFM SemiBold; +} + +.widget-buttons-grid .text-button, +.widget-mpris-player, +.control-center, +.control-center-clear-all, +.widget-volume, +.notification { + border: 5px solid black; + border-radius: 10px; + box-shadow: 5px 5px black; +} + +.notification-row { + outline: none; +} + +.notification-row:focus, .notification-row:hover { + background: @noti-bg-focus; +} + +.notification-row .notification-background { + padding: 6px 12px; +} + +.notification-row .notification-background .close-button { + /* The notification Close Button */ + background: @noti-close-bg; + color: @text-color; + text-shadow: none; + padding: 0; + border-radius: 100%; + margin-top: 5px; + margin-right: 5px; + box-shadow: none; + border: none; + min-width: 24px; + min-height: 24px; +} + +.notification-row .notification-background .close-button:hover { + box-shadow: none; + background: @noti-close-bg-hover; + transition: background 0.15s ease-in-out; + border: none; +} + +.notification-row .notification-background .notification { + /* The actual notification */ + border-radius: 12px; + border: 1px solid @noti-border-color; + transition: background 0.15s ease-in-out; + background: @noti-bg; +} + +.notification-row .notification-background .notification.low { + /* Low Priority Notification */ +} + +.notification-row .notification-background .notification.normal { + /* Normal Priority Notification */ +} + +.notification-row .notification-background .notification.critical { + /* Critical Priority Notification */ +} + +.notification-row .notification-background .notification .notification-action, .notification-row .notification-background .notification .notification-default-action { + padding: 4px; + margin: 0; + box-shadow: none; + background: transparent; + border: none; + color: @text-color; + transition: background 0.15s ease-in-out; +} + +.notification-row .notification-background .notification .notification-action:hover, .notification-row .notification-background .notification .notification-default-action:hover { + -gtk-icon-effect: none; +} + +.notification-row .notification-background .notification .notification-default-action { + /* The large action that also displays the notification summary and body */ + border-radius: 12px; + background: @noti-bg; +} + +.notification-row .notification-background .notification .notification-default-action:not(:only-child) { + /* When alternative actions are visible */ + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content { + background: transparent; + border-radius: 12px; + padding: 4px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .image { + /* Notification Primary Image */ + -gtk-icon-effect: none; + border-radius: 100px; + /* Size in px */ + margin: 4px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .app-icon { + /* Notification app icon (only visible when the primary image is set) */ + -gtk-icon-effect: none; + -gtk-icon-shadow: 0 1px 4px black; + margin: 6px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .summary { + /* Notification summary/title */ + font-size: 16px; + font-weight: bold; + background: transparent; + color: @text-color; + text-shadow: none; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .time { + /* Notification time-ago */ + font-size: 16px; + font-weight: bold; + background: transparent; + color: @text-color; + text-shadow: none; + margin-right: 30px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .body { + /* Notification body */ + font-size: 15px; + font-weight: normal; + background: transparent; + color: @text-color; + text-shadow: none; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content progressbar { + /* The optional notification progress bar */ + margin-top: 4px; +} + + +.notification-row .notification-background .notification .notification-default-action .notification-content .body-image { + /* The "extra" optional bottom notification image */ + margin-top: 4px; + background-color: white; + border-radius: 12px; + -gtk-icon-effect: none; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply { + /* The inline reply section */ + margin-top: 4px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-entry { + background: @noti-bg-darker; + color: @text-color; + caret-color: @text-color; + border: 1px solid @noti-border-color; + border-radius: 12px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button { + margin-left: 4px; + background: @noti-bg; + border: 1px solid @noti-border-color; + border-radius: 12px; + color: @text-color; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:disabled { + background: initial; + color: @text-color-disabled; + border: 1px solid @noti-border-color; + border-color: transparent; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:hover { + background: @noti-bg-hover; +} + +.notification-row .notification-background .notification .notification-action { + /* The alternative actions below the default action */ + background: @noti-bg-darker; +} + + + + +.notification-row .notification-background .notification .notification-action:first-child { + /* add bottom border radius to eliminate clipping */ + border-bottom-left-radius: 12px; +} + +.notification-row .notification-background .notification .notification-action:last-child { + border-bottom-right-radius: 12px; + border-right: none; +} + +.notification-group { + /* Styling only for Grouped Notifications */ +} + +.notification-group.low { + /* Low Priority Group */ +} + +.notification-group.normal { + /* Low Priority Group */ +} + +.notification-group.critical { + /* Low Priority Group */ +} + +.notification-group .notification-group-buttons, .notification-group .notification-group-headers { + margin: 0 16px; + color: @text-color; + min-height: 100px; +} + +.notification-group .notification-group-headers { + /* Notification Group Headers */ +} + +.notification-group .notification-group-headers .notification-group-icon { + color: @text-color; +} + +.notification-group .notification-group-headers .notification-group-header { + color: @text-color; +} + +.notification-group .notification-group-buttons { + /* Notification Group Buttons */ +} + +.notification-group.collapsed .notification-row .notification { + background-color: @noti-bg-opaque; + min-height: 100px; +} + +.notification-group.collapsed .notification-row:not(:last-child) { + /* Top notification in stack */ + /* Set lower stacked notifications opacity to 0 */ +} + +.notification-group.collapsed .notification-row:not(:last-child) .notification-action, +.notification-group.collapsed .notification-row:not(:last-child) .notification-default-action { + opacity: 0; +} + +.notification-group.collapsed:hover .notification-row:not(:only-child) .notification { + background-color: @noti-bg-hover-opaque; +} + +.control-center { + /* The Control Center which contains the old notifications + widgets */ + background: @cc-bg; + color: @text-color; + border-radius: 12px; +} + +.control-center .control-center-list-placeholder { + /* The placeholder when there are no notifications */ + opacity: 0.5; +} + +.control-center .control-center-list { + /* List of notifications */ + background: transparent; +} + +.control-center .control-center-list .notification { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7), 0 2px 6px 2px rgba(0, 0, 0, 0.3); +} + +.control-center .control-center-list .notification .notification-default-action, +.control-center .control-center-list .notification .notification-action { + transition: opacity 400ms ease-in-out, background 0.15s ease-in-out; +} + +.control-center .control-center-list .notification .notification-default-action:hover, +.control-center .control-center-list .notification .notification-action:hover { + background-color: @noti-bg-hover; +} + +.blank-window { + /* Window behind control center and on all other monitors */ + background: transparent; +} + +.floating-notifications { + background: transparent; +} + +.floating-notifications .notification { + box-shadow: none; +} + +/*** Widgets ***/ +/* Title widget */ +.widget-title { + color: @text-color; + margin: 8px; + font-size: 1.5rem; +} + +.widget-title > button { + font-size: initial; + color: @text-color; + text-shadow: none; + background: @noti-bg; + border: 1px solid @noti-border-color; + box-shadow: none; + border-radius: 12px; +} + +.widget-title > button:hover { + background: @noti-bg-hover; +} + +/* DND widget */ +.widget-dnd { + color: @text-color; + margin: 8px; + font-size: 1.5rem; +} + +.widget-dnd > switch { + font-size: initial; + border-radius: 12px; + background: @noti-bg; + border: 1px solid @noti-border-color; + box-shadow: none; +} + +.widget-dnd > switch:checked { + background: @bg-selected; +} + +.widget-dnd > switch slider { + background: @noti-bg-hover; + border-radius: 12px; +} + +/* Label widget */ +.widget-label { + margin: 8px; +} + +.widget-label > label { + font-size: 1.1rem; +} + +/* Mpris widget */ +@define-color mpris-album-art-overlay rgba(0, 0, 0, 0.55); +@define-color mpris-button-hover rgba(0, 0, 0, 0.50); +.widget-mpris { + /* The parent to all players */ + margin-top: 20px +} + +.widget-mpris .widget-mpris-player { + padding: 8px; + padding: 16px; + margin: 16px 20px; + background-color: @mpris-album-art-overlay; + border-radius: 12px; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75); +} + +.widget-mpris .widget-mpris-player button:hover { + /* The media player buttons (play, pause, next, etc...) */ + background: @noti-bg-hover; +} + +.widget-mpris .widget-mpris-player .widget-mpris-album-art { + border-radius: 12px; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75); +} + +.widget-mpris .widget-mpris-player .widget-mpris-title { + font-weight: bold; + font-size: 1.25rem; +} + +.widget-mpris .widget-mpris-player .widget-mpris-subtitle { + font-size: 1.1rem; +} + +.widget-mpris .widget-mpris-player > box > button { + /* Change player control buttons */ + font-size: 1.5rem; +} + +.widget-mpris .widget-mpris-player > box > button:hover { + background-color: @mpris-button-hover; +} + +.widget-mpris > box > button { + /* Change player side buttons */ + background: @noti-bg-darker +} + +.widget-mpris > box > button:disabled { + /* Change player side buttons insensitive */ + background: transparent +} + +/* Buttons widget */ +.widget-buttons-grid { + padding: 8px; + margin: 8px; + border-radius: 12px; + background-color: @noti-bg-darker; + font-size: 1.5rem; +} + +.widget-buttons-grid > flowbox > flowboxchild > button { + background: @noti-bg; + border-radius: 12px; + margin: 0px 15px 0px 15px +} + +.widget-buttons-grid > flowbox > flowboxchild > button.toggle:checked { + /* style given to the active toggle button */ + background: #FF0000; +} + +/* Menubar widget */ +.widget-menubar > box > .menu-button-bar > button { + border: none; + background: transparent; +} + +/* .AnyName { Name defined in config after # + background-color: @noti-bg; + padding: 8px; + margin: 8p border-radius: 12px; +} + +.AnyName>button { + background: transparent; + border: none; +} + +.AnyName>button:hover { + background-color: @noti-bg-hover; +} */ +.topbar-buttons > button { + /* Name defined in config after # */ + border: none; + background: transparent; +} + +/* Volume widget */ +.widget-volume { + background-color: @noti-bg; + padding: 8px; + margin: 8px; + border-radius: 12px; + font-size: 1.5rem; +} + +.widget-volume > box > button { + background: #FF0000; + border: none; +} + +.per-app-volume { + background-color: @noti-bg-alt; + padding: 4px 8px 8px 8px; + margin: 0px 8px 8px 8px; + border-radius: 12px; +} + +/* Backlight widget */ +.widget-backlight { + background-color: @noti-bg; + padding: 8px; + margin: 8px; + border-radius: 12px; +} + +/* Inhibitors widget */ +.widget-inhibitors { + margin: 8px; + font-size: 1.5rem; +} + +.widget-inhibitors > button { + font-size: initial; + color: @text-color; + text-shadow: none; + background: @noti-bg; + border: 1px solid @noti-border-color; + box-shadow: none; + border-radius: 12px; +} + +.widget-inhibitors > button:hover { + background: @noti-bg-hover; +} + +.widget-title { + color: #7aa2f7; + background: @noti-bg-darker; + padding: 5px 10px; + margin: 10px 10px 5px 10px; + font-size: 1.5rem; + border-radius: 5px; +} + +.widget-title > button { + font-size: 1rem; + color: @text-color; + text-shadow: none; + background: @noti-bg; + box-shadow: none; + border-radius: 5px; +} + +.widget-title > button:hover { + background: #f7768e; + color: @cc-bg; +} + +.widget-dnd { + background: @noti-bg-darker; + padding: 5px 10px; + margin: 5px 10px; + border-radius: 5px; + font-size: large; + color: #7aa2f7; +} + +.widget-dnd > switch { + border-radius: 5px; + background: #7aa2f7; +} + +.widget-dnd > switch:checked { + background: #f7768e; + border: 1px solid #f7768e; +} + +.widget-dnd > switch slider, +.widget-dnd > switch:checked slider { + background: @cc-bg; + border-radius: 5px; +} diff --git a/.config/swaync/config.json b/.config/swaync/config.json new file mode 100644 index 0000000..2ab02d3 --- /dev/null +++ b/.config/swaync/config.json @@ -0,0 +1,108 @@ +{ + "$schema": "/etc/xdg/swaync/configSchema.json", + "positionX": "center", + "positionY": "top", + "layer": "overlay", + "control-center-layer": "top", + "layer-shell": true, + "cssPriority": "application", + "control-center-margin-top": 10, + "control-center-margin-bottom": 0, + "control-center-margin-right": 0, + "control-center-margin-left": 0, + "notification-2fa-action": true, + "notification-inline-replies": false, + "notification-icon-size": 64, + "notification-body-image-height": 100, + "notification-body-image-width": 200, + "timeout": 10, + "timeout-low": 5, + "timeout-critical": 0, + "fit-to-screen": false, + "relative-timestamps": true, + "control-center-width": 500, + "control-center-height": 1000, + "notification-window-width": 500, + "keyboard-shortcuts": true, + "image-visibility": "when-available", + "transition-time": 200, + "hide-on-clear": false, + "hide-on-action": true, + "script-fail-notify": true, + "scripts": { + "example-script": { + "exec": "echo 'Do something...'", + "urgency": "Normal" + }, + "example-action-script": { + "exec": "echo 'Do something actionable!'", + "urgency": "Normal", + "run-on": "action" + } + }, + "notification-visibility": { + "example-name": { + "state": "muted", + "urgency": "Low", + "app-name": "Spotify" + } + }, + "widgets": [ + "inhibitors", + "title", + "dnd", + "mpris", + "buttons-grid", + "volume", + "notifications", + "backlight" + ], + "widget-config": { + "title": { + "text": "Notification Center", + "clear-all-button": true, + "button-text": "󰆴 Clear" + }, + "dnd": { + "text": "Do Not Disturb" + }, + "label": { + "max-lines": 1, + "text": "Notification Center" + }, + "mpris": { + "image-size": 50, + "image-radius": 5 + }, + "volume": { + "label": "󰕾", + "show-per-app": true, + "show-per-app-icon": true + }, + "backlight": { + "label": "󰃟" + }, + "buttons-grid": { + "actions": [ + { + "label": "󰕾", + "command": "pactl set-sink-mute @DEFAULT_SINK@ toggle", + "type": "toggle" + }, + { + "label": "󰍬", + "command": "volumecontrol.sh -i m", + "type": "toggle" + }, + { + "label": "󰖩", + "command": "iwgtk" + }, + { + "label": "󰂯", + "command": "blueman-manager" + } + ] + } + } +} diff --git a/.config/swaync/configSchema.json b/.config/swaync/configSchema.json new file mode 100644 index 0000000..1a7f05c --- /dev/null +++ b/.config/swaync/configSchema.json @@ -0,0 +1,627 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "SwayNotificationCenter JSON schema", + "type": "object", + "additionalProperties": false, + "properties": { + "$schema": { + "type": "string", + "description": "Pointer to the schema against which this document should be validated." + }, + "positionX": { + "type": "string", + "description": "Horizontal position of control center and notification window", + "default": "right", + "enum": ["right", "left", "center"] + }, + "layer": { + "type": "string", + "description": "Layer of notification window", + "default": "overlay", + "enum": ["background", "bottom", "top", "overlay"] + }, + "layer-shell": { + "type": "boolean", + "description": "Wether or not the windows should be opened as layer-shell surfaces. Note: Requires swaync restart to apply", + "default": true + }, + "cssPriority": { + "type": "string", + "description": "Which GTK priority to use when loading the default and user CSS files. Pick \"user\" to override XDG_CONFIG_HOME/gtk-3.0/gtk.css", + "default": "application", + "enum": ["application", "user"] + }, + "positionY": { + "type": "string", + "description": "Vertical position of control center and notification window", + "default": "top", + "enum": ["top", "center", "bottom"] + }, + "control-center-positionX": { + "type": "string", + "description": "Optional: Horizontal position of the control center. Supersedes positionX if not set to `none`", + "default": "none", + "enum": ["right", "left", "center", "none"] + }, + "control-center-positionY": { + "type": "string", + "description": "Optional: Vertical position of the control center. Supersedes positionY if not set to `none`", + "default": "none", + "enum": ["top", "bottom", "none"] + }, + "control-center-margin-top": { + "type": "integer", + "description": "The margin (in pixels) at the top of the control center. 0 to disable", + "default": 0 + }, + "control-center-margin-bottom": { + "type": "integer", + "description": "The margin (in pixels) at the bottom of the control center. 0 to disable", + "default": 0 + }, + "control-center-margin-right": { + "type": "integer", + "description": "The margin (in pixels) at the right of the control center. 0 to disable", + "default": 0 + }, + "control-center-margin-left": { + "type": "integer", + "description": "The margin (in pixels) at the left of the control center. 0 to disable", + "default": 0 + }, + "control-center-layer": { + "type": "string", + "description": "Layer of control center window", + "default": "none", + "enum": ["background", "bottom", "top", "overlay", "none"] + }, + "control-center-exclusive-zone": { + "type": "boolean", + "description": "Whether or not the control center should follow the compositors exclusive zones. An example would be setting it to \"false\" to cover your panel/dock.", + "default": true + }, + "notification-2fa-action": { + "type": "boolean", + "description": "If each notification should display a 'COPY \"1234\"' action", + "default": true + }, + "notification-inline-replies": { + "type": "boolean", + "description": "If notifications should display a text field to reply if the sender requests it. NOTE: Replying in popup notifications is only available if the compositor supports GTK Layer-Shell ON_DEMAND keyboard interactivity.", + "default": false + }, + "notification-icon-size": { + "type": "integer", + "description": "The notification icon size (in pixels). The app icon size is 1/3", + "default": 64, + "minimum": 16 + }, + "notification-body-image-height": { + "type": "integer", + "description": "The notification body image height (in pixels)", + "default": 100, + "minimum": 100 + }, + "notification-body-image-width": { + "type": "integer", + "description": "The notification body image width (in pixels)", + "default": 200, + "minimum": 200 + }, + "timeout": { + "type": "integer", + "description": "The notification timeout for notifications with normal priority", + "default": 10 + }, + "timeout-low": { + "type": "integer", + "description": "The notification timeout for notifications with low priority", + "default": 5 + }, + "timeout-critical": { + "type": "integer", + "description": "The notification timeout for notifications with critical priority. 0 to disable", + "default": 0 + }, + "notification-window-width": { + "type": "integer", + "description": "Width of the notification in pixels", + "default": 500 + }, + "fit-to-screen": { + "type": "boolean", + "description": "If the control center should expand to both edges of the screen", + "default": true + }, + "relative-timestamps": { + "type": "boolean", + "description": "Display notification timestamps relative to now e.g. \"26 minutes ago\". If false, a local iso8601-formatted absolute timestamp is displayed.", + "default": true + }, + "control-center-height": { + "type": "integer", + "description": "Height of the control center in pixels. Ignored when 'fit-to-screen' is set to 'true'", + "default": 600, + "minimum": 300 + }, + "control-center-width": { + "type": "integer", + "description": "Width of the control center in pixels", + "default": 500, + "minimum": 300 + }, + "keyboard-shortcuts": { + "type": "boolean", + "description": "If control center should use keyboard shortcuts", + "default": true + }, + "image-visibility": { + "type": "string", + "description": "The notification image visibility when no icon is available.", + "default": "when-available", + "enum": ["always", "when-available", "never"] + }, + "transition-time": { + "type": "integer", + "description": "The notification animation duration. 0 to disable", + "default": 200 + }, + "hide-on-clear": { + "type": "boolean", + "description": "Hides the control center after pressing \"Clear All\"", + "default": false + }, + "hide-on-action": { + "type": "boolean", + "description": "Hides the control center when clicking on notification action", + "default": true + }, + "text-empty": { + "type": "string", + "description": "Text that appears when there are no notifications to show", + "default": "No Notifications" + }, + "script-fail-notify": { + "type": "boolean", + "description": "Sends a notification if a script fails to run", + "default": true + }, + "scripts": { + "type": "object", + "description": "Which scripts to check and potentially run for every notification. If the notification doesn't include one of the properties, that property will be ignored. All properties (except for exec) use regex. If all properties match the given notification, the script will be run. Only the first matching script will be run.", + "minProperties": 1, + "additionalProperties": false, + "patternProperties": { + "^.{1,}$": { + "type": "object", + "description": "Your script object.", + "required": ["exec"], + "minProperties": 2, + "additionalProperties": false, + "properties": { + "exec": { + "type": "string", + "description": "The script to run. Can also run regular shell commands." + }, + "app-name": { + "type": "string", + "description": "The app-name. Uses Regex." + }, + "desktop-entry": { + "type": "string", + "description": "The desktop-entry. Uses Regex." + }, + "summary": { + "type": "string", + "description": "The summary of the notification. Uses Regex." + }, + "body": { + "type": "string", + "description": "The body of the notification. Uses Regex." + }, + "urgency": { + "type": "string", + "description": "The urgency of the notification.", + "default": "Normal", + "enum": ["Low", "Normal", "Critical"] + }, + "category": { + "type": "string", + "description": "Which category the notification belongs to. Uses Regex." + }, + "run-on": { + "type": "string", + "description": "Whether to run the script on an action being activated, or when the notification is received.", + "enum": ["action", "receive"], + "default": "receive" + } + } + } + } + }, + "notification-visibility": { + "type": "object", + "description": "Set the visibility of each incoming notification. If the notification doesn't include one of the properties, that property will be ignored. All properties (except for state) use regex. If all properties match the given notification, the notification will be follow the provided state. Only the first matching object will be used.", + "minProperties": 1, + "additionalProperties": false, + "patternProperties": { + "^.{1,}$": { + "type": "object", + "description": "Your script object.", + "required": ["state"], + "minProperties": 2, + "additionalProperties": false, + "properties": { + "state": { + "type": "string", + "description": "The notification visibility state.", + "default": "enabled", + "enum": ["ignored", "muted", "enabled", "transient"] + }, + "app-name": { + "type": "string", + "description": "The app-name. Uses Regex." + }, + "desktop-entry": { + "type": "string", + "description": "The desktop-entry. Uses Regex." + }, + "summary": { + "type": "string", + "description": "The summary of the notification. Uses Regex." + }, + "body": { + "type": "string", + "description": "The body of the notification. Uses Regex." + }, + "urgency": { + "type": "string", + "description": "The urgency of the notification.", + "default": "Normal", + "enum": ["Low", "Normal", "Critical"] + }, + "override-urgency": { + "type": "string", + "description": "The new urgency of the notification (optional)", + "default": "unset", + "enum": ["unset", "low", "normal", "critical"] + }, + "category": { + "type": "string", + "description": "Which category the notification belongs to. Uses Regex." + } + } + } + } + }, + "widgets": { + "type": "array", + "description": "Which order and which widgets to display. If the \"notifications\" widget isn't specified, it will be placed at the bottom.", + "default": ["inhibitors", "title", "dnd", "notifications"], + "items": { + "type": "string", + "$comment": "Sadly can't use regex and enums at the same time. Fix in the future?", + "pattern": "^[a-zA-Z0-9_-]{1,}(#[a-zA-Z0-9_-]{1,}){0,1}?$" + } + }, + "widget-config": { + "type": "object", + "description": "Configure specific widget properties.", + "additionalProperties": false, + "$comment": "New widgets go here in \"patternProperties\" ↓", + "patternProperties": { + "^title(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$comment": "References the widget structure from \"widgets\" below", + "$ref": "#/widgets/title" + }, + "^dnd(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/dnd" + }, + "^label(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/label" + }, + "^mpris(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/mpris" + }, + "^buttons-grid(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/buttons-grid" + }, + "^menubar(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/menubar" + }, + "^volume(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/volume" + }, + "^backlight(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$ref": "#/widgets/backlight" + }, + "^inhibitors(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "$comment": "References the widget structure from \"widgets\" below", + "$ref": "#/widgets/inhibitors" + } + } + } + }, + "widgets": { + "$comment": "New widgets go here", + "title": { + "type": "object", + "description": "Control Center Title Widget", + "additionalProperties": false, + "properties": { + "text": { + "type": "string", + "description": "The title of the widget", + "default": "Notifications" + }, + "clear-all-button": { + "type": "boolean", + "description": "Wether to display a \"Clear All\" button", + "default": true + }, + "button-text": { + "type": "string", + "description": "\"Clear All\" button text", + "default": "Clear All" + } + } + }, + "dnd": { + "type": "object", + "description": "Control Center Do Not Disturb Widget", + "additionalProperties": false, + "properties": { + "text": { + "type": "string", + "description": "The title of the widget", + "default": "Do Not Disturb" + } + } + }, + "label": { + "type": "object", + "description": "A generic widget that allows the user to add custom text", + "additionalProperties": false, + "properties": { + "text": { + "type": "string", + "description": "The text content of the widget", + "default": "Label Text" + }, + "max-lines": { + "type": "integer", + "description": "The maximum lines", + "default": 5 + } + } + }, + "mpris": { + "type": "object", + "description": "A widget that displays multiple music players", + "additionalProperties": false, + "properties": { + "image-size": { + "type": "integer", + "description": "The size of the album art", + "default": 96 + }, + "image-radius": { + "type": "integer", + "description": "The border radius of the album art. Will be overriden by setting the border-radius in the style.css for the \".widget-mpris-album-art\" class", + + "default": 12 + }, + "blur": { + "type": "boolean", + "description": "Appy the artwork as the MPRIS background and blur it", + "default": true + } + } + }, + "buttons-grid": { + "type": "object", + "description": "A widget to add a grid of buttons that execute shell commands", + "additionalProperties": false, + "properties": { + "actions": { + "type": "array", + "description": "A list of actions containing a label and a command", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "Text to be displayed in button", + "default": "label" + }, + "command": { + "type": "string", + "description": "Command to be executed on click", + "default": "" + }, + "type": { + "type": "string", + "description": "Type of the button; toggle buttons receive the .active css class and an env variable 'SWAYNC_TOGGLE_STATE' is set. See example in the default config.json", + "default": "normal", + "enum": ["normal", "toggle"] + }, + "update-command": { + "type": "string", + "description": "Command to be executed on visibility change of cc to update the active state of the toggle button (should echo true or false)", + "default": "" + }, + "active": { + "type": "boolean", + "description": "Wether the toggle button is active as default or not", + "default": false + } + } + } + } + } + }, + "menubar": { + "type": "object", + "description": "A bar that contains action-buttons and buttons to open a dropdown with action-buttons", + "additionalProperties": false, + "patternProperties": { + "^menu(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "type": "object", + "description": "A button that opens a dropdown with action-buttons", + "additionalProperties": false, + "properties": { + "label": { + "type": "string", + "description": "Text to be displayed in button", + "default": "Menu" + }, + "position": { + "type": "string", + "description": "Horizontal position of the button in the bar", + "default": "right", + "enum": ["right", "left"] + }, + "animation-type": { + "type": "string", + "default": "slide_down", + "description": "Animation type for menu", + "enum": ["slide_down", "slide_up", "none"] + }, + "animation-duration":{ + "type": "integer", + "default": 250, + "description": "Duration of animation in milliseconds" + }, + "actions": { + "$ref" : "#/widgets/buttons-grid/properties/actions" + } + } + }, + "^buttons(#[a-zA-Z0-9_-]{1,}){0,1}?$": { + "type": "object", + "description": "A list of action-buttons to be displayed in the topbar", + "additionalProperties": false, + "properties": { + "position": { + "type": "string", + "description": "Horizontal position of the button in the bar", + "default": "right", + "enum": ["right", "left"] + }, + "actions": { + "$ref" : "#/widgets/buttons-grid/properties/actions" + } + } + } + } + }, + "volume": { + "type": "object", + "description": "Slider to control pulse volume", + "additionalProperties": false, + "properties": { + "label": { + "type": "string", + "description": "Text displayed in front of the volume slider", + "default": "Volume" + }, + "show-per-app": { + "type": "boolean", + "default": false, + "description": "Show per app volume control" + }, + "show-per-app-icon": { + "type": "boolean", + "default": true, + "description": "Show application icon in per app control" + }, + "show-per-app-label": { + "type": "boolean", + "default": false, + "description": "Show application name in per app control" + }, + "empty-list-label": { + "type": "string", + "default": "No active sink input", + "description": "Text displayed when there are not active sink inputs" + }, + "expand-button-label": { + "type": "string", + "default": "⇧", + "description": "Label displayed on button to show per app volume control" + }, + "collapse-button-label": { + "type": "string", + "default": "⇩", + "description": "Label displayed on button to hide per app volume control" + }, + "icon-size": { + "type": "integer", + "default": 24, + "description": "Size of the application icon in per app volume control" + }, + "animation-type": { + "type": "string", + "default": "slide_down", + "description": "Animation type for menu", + "enum": ["slide_down", "slide_up", "none"] + }, + "animation-duration":{ + "type": "integer", + "default": 250, + "description": "Duration of animation in milliseconds" + } + } + }, + "backlight": { + "type": "object", + "description": "Slider to control monitor brightness", + "additionalProperties": false, + "properties": { + "label": { + "type": "string", + "description": "Text displayed in front of the backlight slider", + "default": "Brightness" + }, + "device": { + "type": "string", + "description": "Name of monitor (find possible devices using `ls /sys/class/backlight` or `ls /sys/class/leds`)", + "default": "intel_backlight" + }, + "subsystem": { + "type": "string", + "description": "Kernel subsystem for brightness control", + "default": "backlight", + "enum": ["backlight", "leds"] + }, + "min": { + "type": "integer", + "default": 0, + "description": "Lowest possible value for brightness" + } + } + }, + "inhibitors": { + "type": "object", + "description": "Control Center Inhibitors Widget", + "additionalProperties": false, + "properties": { + "text": { + "type": "string", + "description": "The title of the widget", + "default": "Inhibitors" + }, + "clear-all-button": { + "type": "boolean", + "description": "Wether to display a \"Clear All\" button", + "default": true + }, + "button-text": { + "type": "string", + "description": "\"Clear All\" button text", + "default": "Clear All" + } + } + } + } +} diff --git a/.config/swaync/style.css b/.config/swaync/style.css new file mode 100644 index 0000000..fce9fd7 --- /dev/null +++ b/.config/swaync/style.css @@ -0,0 +1,576 @@ +@define-color cc-bg rgba(26, 27, 38, 1); +@define-color noti-border-color rgba(255, 255, 255, 0.15); +@define-color noti-bg rgb(17, 17, 27); +@define-color noti-bg-darker rgb(43, 43, 57); +@define-color noti-bg-hover rgb(27, 27, 43); +@define-color noti-bg-focus rgba(27, 27, 27, 1); +@define-color noti-close-bg rgba(255, 255, 255, 0.1); +@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15); +@define-color text-color rgba(169, 177, 214, 1); +@define-color text-color-disabled rgb(150, 150, 150); +@define-color bg-selected rgb(0, 128, 255); + +* { + font-family: JetBrainsMono NFM SemiBold; +} + +.widget-buttons-grid .text-button, +.control-center-clear-all, +.widget-volume, +.notification { + border: 5px solid black; + border-radius: 10px; + box-shadow: 5px 5px black; +} + +.control-center { + border: 5px solid #7aa2f7; + padding: 5px 5px 5px 5px; +} + +.notification-row { + outline: none; +} + +.notification-row:focus, .notification-row:hover { + background: @noti-bg-focus; +} + +.notification-row .notification-background { + padding: 6px 12px; +} + +.notification-row .notification-background .close-button { + /* The notification Close Button */ + background: @noti-close-bg; + color: @text-color; + text-shadow: none; + padding: 0; + border-radius: 100%; + margin-top: 5px; + margin-right: 5px; + box-shadow: none; + border: none; + min-width: 24px; + min-height: 24px; +} + +.notification-row .notification-background .close-button:hover { + box-shadow: none; + background: @noti-close-bg-hover; + transition: background 0.15s ease-in-out; + border: none; +} + +.notification-row .notification-background .notification { + /* The actual notification */ + border-radius: 12px; + border: 1px solid @noti-border-color; + transition: background 0.15s ease-in-out; + background: @noti-bg; +} + +.notification-row .notification-background .notification.low { + /* Low Priority Notification */ +} + +.notification-row .notification-background .notification.normal { + /* Normal Priority Notification */ +} + +.notification-row .notification-background .notification.critical { + /* Critical Priority Notification */ +} + +.notification-row .notification-background .notification .notification-action, .notification-row .notification-background .notification .notification-default-action { + padding: 4px; + margin: 0; + box-shadow: none; + background: transparent; + border: none; + color: @text-color; + transition: background 0.15s ease-in-out; +} + +.notification-row .notification-background .notification .notification-action:hover, .notification-row .notification-background .notification .notification-default-action:hover { + -gtk-icon-effect: none; +} + +.notification-row .notification-background .notification .notification-default-action { + /* The large action that also displays the notification summary and body */ + border-radius: 12px; + background: @noti-bg; +} + +.notification-row .notification-background .notification .notification-default-action:not(:only-child) { + /* When alternative actions are visible */ + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content { + background: transparent; + border-radius: 12px; + padding: 4px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .image { + /* Notification Primary Image */ + -gtk-icon-effect: none; + border-radius: 100px; + /* Size in px */ + margin: 4px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .app-icon { + /* Notification app icon (only visible when the primary image is set) */ + -gtk-icon-effect: none; + -gtk-icon-shadow: 0 1px 4px black; + margin: 6px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .summary { + /* Notification summary/title */ + font-size: 16px; + font-weight: bold; + background: transparent; + color: @text-color; + text-shadow: none; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .time { + /* Notification time-ago */ + font-size: 16px; + font-weight: bold; + background: transparent; + color: @text-color; + text-shadow: none; + margin-right: 30px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .body { + /* Notification body */ + font-size: 15px; + font-weight: normal; + background: transparent; + color: @text-color; + text-shadow: none; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content progressbar { + /* The optional notification progress bar */ + margin-top: 4px; +} + + +.notification-row .notification-background .notification .notification-default-action .notification-content .body-image { + /* The "extra" optional bottom notification image */ + margin-top: 4px; + background-color: white; + border-radius: 12px; + -gtk-icon-effect: none; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply { + /* The inline reply section */ + margin-top: 4px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-entry { + background: @noti-bg-darker; + color: @text-color; + caret-color: @text-color; + border: 1px solid @noti-border-color; + border-radius: 12px; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button { + margin-left: 4px; + background: @noti-bg; + border: 1px solid @noti-border-color; + border-radius: 12px; + color: @text-color; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:disabled { + background: initial; + color: @text-color-disabled; + border: 1px solid @noti-border-color; + border-color: transparent; +} + +.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:hover { + background: @noti-bg-hover; +} + +.notification-row .notification-background .notification .notification-action { + /* The alternative actions below the default action */ + background: @noti-bg-darker; +} + + + + +.notification-row .notification-background .notification .notification-action:first-child { + /* add bottom border radius to eliminate clipping */ + border-bottom-left-radius: 12px; +} + +.notification-row .notification-background .notification .notification-action:last-child { + border-bottom-right-radius: 12px; + border-right: none; +} + +.notification-group { + /* Styling only for Grouped Notifications */ +} + +.notification-group.low { + /* Low Priority Group */ +} + +.notification-group.normal { + /* Low Priority Group */ +} + +.notification-group.critical { + /* Low Priority Group */ +} + +.notification-group .notification-group-buttons, .notification-group .notification-group-headers { + margin: 0 16px; + color: @text-color; + min-height: 100px; +} + +.notification-group .notification-group-headers { + /* Notification Group Headers */ +} + +.notification-group .notification-group-headers .notification-group-icon { + color: @text-color; +} + +.notification-group .notification-group-headers .notification-group-header { + color: @text-color; +} + +.notification-group .notification-group-buttons { + /* Notification Group Buttons */ +} + +.notification-group.collapsed .notification-row .notification { + background-color: @noti-bg-opaque; + min-height: 100px; +} + +.notification-group.collapsed .notification-row:not(:last-child) { + /* Top notification in stack */ + /* Set lower stacked notifications opacity to 0 */ +} + +.notification-group.collapsed .notification-row:not(:last-child) .notification-action, +.notification-group.collapsed .notification-row:not(:last-child) .notification-default-action { + opacity: 0; +} + +.notification-group.collapsed:hover .notification-row:not(:only-child) .notification { + background-color: @noti-bg-hover-opaque; +} + +.control-center { + /* The Control Center which contains the old notifications + widgets */ + background: @cc-bg; + color: @text-color; + border-radius: 12px; +} + +.control-center .control-center-list-placeholder { + /* The placeholder when there are no notifications */ + opacity: 0.5; +} + +.control-center .control-center-list { + /* List of notifications */ + background: transparent; +} + +.control-center .control-center-list .notification { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7), 0 2px 6px 2px rgba(0, 0, 0, 0.3); +} + +.control-center .control-center-list .notification .notification-default-action, +.control-center .control-center-list .notification .notification-action { + transition: opacity 400ms ease-in-out, background 0.15s ease-in-out; +} + +.control-center .control-center-list .notification .notification-default-action:hover, +.control-center .control-center-list .notification .notification-action:hover { + background-color: @noti-bg-hover; +} + +.blank-window { + /* Window behind control center and on all other monitors */ + background: transparent; +} + +.floating-notifications { + background: transparent; +} + +.floating-notifications .notification { + box-shadow: none; +} + +/*** Widgets ***/ +/* Title widget */ +.widget-title { + color: @text-color; + margin: 8px; + font-size: 1.5rem; +} + +.widget-title > button { + font-size: initial; + color: @text-color; + text-shadow: none; + background: @noti-bg; + border: 1px solid @noti-border-color; + box-shadow: none; + border-radius: 12px; +} + +.widget-title > button:hover { + background: @noti-bg-hover; +} + +/* DND widget */ +.widget-dnd { + color: @text-color; + margin: 8px; + font-size: 1.5rem; +} + +.widget-dnd > switch { + font-size: initial; + border-radius: 12px; + background: @noti-bg; + border: 1px solid @noti-border-color; + box-shadow: none; +} + +.widget-dnd > switch:checked { + background: @bg-selected; +} + +.widget-dnd > switch slider { + background: @noti-bg-hover; + border-radius: 12px; +} + +/* Label widget */ +.widget-label { + margin: 8px; +} + +.widget-label > label { + font-size: 1.1rem; +} + +/* Mpris widget */ +@define-color mpris-album-art-overlay rgba(0, 0, 0, 0.55); +@define-color mpris-button-hover rgba(0, 0, 0, 0.50); +.widget-mpris { + /* The parent to all players */ + margin-top: 20px +} + +.widget-mpris .widget-mpris-player { + padding: 8px; + padding: 16px; + margin: 16px 20px; + background-color: @mpris-album-art-overlay; + border-radius: 12px; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75); +} + +.widget-mpris .widget-mpris-player button:hover { + /* The media player buttons (play, pause, next, etc...) */ + background: @noti-bg-hover; +} + +.widget-mpris .widget-mpris-player .widget-mpris-album-art { + border-radius: 12px; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75); +} + +.widget-mpris .widget-mpris-player .widget-mpris-title { + font-weight: bold; + font-size: 1.25rem; +} + +.widget-mpris .widget-mpris-player .widget-mpris-subtitle { + font-size: 1.1rem; +} + +.widget-mpris .widget-mpris-player > box > button { + /* Change player control buttons */ + font-size: 1.5rem; +} + +.widget-mpris .widget-mpris-player > box > button:hover { + background-color: @mpris-button-hover; +} + +.widget-mpris > box > button { + /* Change player side buttons */ + background: @noti-bg-darker +} + +.widget-mpris > box > button:disabled { + /* Change player side buttons insensitive */ + background: transparent +} + +/* Buttons widget */ +.widget-buttons-grid { + padding: 8px; + margin: 8px; + border-radius: 12px; + background-color: @noti-bg-darker; + font-size: 1.5rem; +} + +.widget-buttons-grid > flowbox > flowboxchild > button { + background: @noti-bg; + border-radius: 12px; + margin: 0px 15px 0px 15px +} + +.widget-buttons-grid > flowbox > flowboxchild > button.toggle:checked { + /* style given to the active toggle button */ + background: #FF0000; +} + +/* Menubar widget */ +.widget-menubar > box > .menu-button-bar > button { + border: none; + background: transparent; +} + +/* .AnyName { Name defined in config after # + background-color: @noti-bg; + padding: 8px; + margin: 8p border-radius: 12px; +} + +.AnyName>button { + background: transparent; + border: none; +} + +.AnyName>button:hover { + background-color: @noti-bg-hover; +} */ +.topbar-buttons > button { + /* Name defined in config after # */ + border: none; + background: transparent; +} + +/* Volume widget */ +.widget-volume { + background-color: @noti-bg; + padding: 8px; + margin: 8px; + border-radius: 12px; + font-size: 1.5rem; +} + +.widget-volume > box > button { + background: #FF0000; + border: none; +} + +.per-app-volume { + background-color: @noti-bg-alt; + padding: 4px 8px 8px 8px; + margin: 0px 8px 8px 8px; + border-radius: 12px; +} + +/* Backlight widget */ +.widget-backlight { + background-color: @noti-bg; + padding: 8px; + margin: 8px; + border-radius: 12px; +} + +/* Inhibitors widget */ +.widget-inhibitors { + margin: 8px; + font-size: 1.5rem; +} + +.widget-inhibitors > button { + font-size: initial; + color: @text-color; + text-shadow: none; + background: @noti-bg; + border: 1px solid @noti-border-color; + box-shadow: none; + border-radius: 12px; +} + +.widget-inhibitors > button:hover { + background: @noti-bg-hover; +} + +.widget-title { + color: #7aa2f7; + background: @noti-bg-darker; + padding: 5px 10px; + margin: 10px 10px 5px 10px; + font-size: 1.5rem; + border-radius: 5px; +} + +.widget-title > button { + font-size: 1rem; + color: @text-color; + text-shadow: none; + background: @noti-bg; + box-shadow: none; + border-radius: 5px; +} + +.widget-title > button:hover { + background: #f7768e; + color: @cc-bg; +} + +.widget-dnd { + background: @noti-bg-darker; + padding: 5px 10px; + margin: 5px 10px; + border-radius: 5px; + font-size: large; + color: #7aa2f7; +} + +.widget-dnd > switch { + border-radius: 5px; + background: #7aa2f7; +} + +.widget-dnd > switch:checked { + background: #f7768e; + border: 1px solid #f7768e; +} + +.widget-dnd > switch slider, +.widget-dnd > switch:checked slider { + background: @cc-bg; + border-radius: 5px; +} diff --git a/.config/waybar/backup/primary_screen/config.jsonc b/.config/waybar/backup/primary_screen/config.jsonc new file mode 100644 index 0000000..8f074d2 --- /dev/null +++ b/.config/waybar/backup/primary_screen/config.jsonc @@ -0,0 +1,377 @@ +// --// waybar config generated by wbarconfgen.sh //-- // +{ + // sourced from header module // + "output": "DP-1", + "layer": "top", + "position": "top", + "mod": "dock", + "height": 31, + "exclusive": true, + "passthrough": false, + "gtk-layer-shell": true, + "reload_style_on_change": true, + // positions generated based on config.ctl // + "modules-left": [ + "custom/padd", + "custom/l_end", + "custom/power", + "custom/cliphist", + "custom/r_end", + "custom/l_end", + "privacy", + "tray", + "custom/r_end", + "custom/padd", + ], + "modules-center": [ + "custom/padd", + "custom/l_end", + "network", + "custom/r_end", + "custom/l_end", + "memory", + "cpu", + "custom/r_end", + "custom/l_end", + "idle_inhibitor", + "clock", + "custom/r_end", + "custom/padd", + ], + "modules-right": [ + "custom/padd", + "custom/l_end", + "backlight", + "pulseaudio", + "custom/r_end", + "custom/l_end", + "wlr/taskbar", + "custom/r_end", + "custom/padd", + ], + // sourced from modules based on config.ctl // + "custom/notifications": { + "format": "{icon} {}", + "format-icons": { + "email-notification": "", + "chat-notification": "󱋊", + "warning-notification": "󱨪", + "error-notification": "󱨪", + "network-notification": "󱂇", + "battery-notification": "󰁺", + "update-notification": "󰚰", + "music-notification": "󰝚", + "volume-notification": "󰕿", + "notification": "", + "dnd": "", + "none": "" + }, + "return-type": "json", + "exec-if": "which dunstctl", + "exec": "notifications.py", + "on-scroll-down": "sleep 0.1 && dunstctl history-pop", + "on-click": "dunstctl set-paused toggle", + "on-click-middle": "dunstctl history-clear", + "on-click-right": "dunstctl close-all", + "interval": 1, + "tooltip": true, + "escape": true + }, + + "hyprland/workspaces": { + "disable-scroll": true, + "rotate": 0, + "all-outputs": true, + "active-only": false, + "persistent-workspaces": {}, + }, + "custom/cava": { + "format": "{}", + "exec": "waybar_cava.sh", + "restart-interval": 1, + "hide-empty": true, + }, + "mpris": { + "format": "{player_icon} {dynamic}", + "rotate": 0, + "format-paused": "{status_icon} {dynamic}", + "player-icons": { + "default": "▶", + "mpv": "🎵", + }, + "status-icons": { + "paused": "", + }, + // "ignored-players": ["firefox"] + "max-length": 1000, + "interval": 1, + }, + "cpu": { + "interval": 10, + "format": "󰍛 {usage}%", + "rotate": 0, + "format-alt": "{icon0}{icon1}{icon2}{icon3}", + "format-icons": [ + "▁", + "▂", + "▃", + "▄", + "▅", + "▆", + "▇", + "█" + ], + }, + "memory": { + "states": { + "c": 90, // critical + "h": 60, // high + "m": 30, // medium + }, + "interval": 30, + "format": "󰾆 {used}gb", + "rotate": 0, + "format-m": "󰾅 {used}gb", + "format-h": "󰓅 {used}gb", + "format-c": " {used}gb", + "format-alt": "󰾆 {percentage}%", + "max-length": 10, + "tooltip": true, + "tooltip-format": "󰾆 {percentage}%\n {used:0.1f}gb/{total:0.1f}gb", + }, + "custom/power": { + "format": " {}", + "rotate": 0, + "exec": "echo ; echo  logout", + "on-click": "logoutlaunch.sh 2", + "on-click-right": "logoutlaunch.sh 1", + "interval": 86400, // once every day + "tooltip": true, + }, + "custom/cliphist": { + "format": " {}", + "rotate": 0, + "exec": "echo ; echo 󰅇 clipboard history", + "on-click": "sleep 0.1 && cliphist.sh c", + "on-click-right": "sleep 0.1 && cliphist.sh d", + "on-click-middle": "sleep 0.1 && cliphist.sh w", + "interval": 86400, // once every day + "tooltip": true, + }, + "wlr/taskbar": { + "format": "{icon}", + "rotate": 0, + "icon-size": 25, + "icon-theme": "Gruvbox-Plus-Dark", + "spacing": 0, + "tooltip-format": "{title}", + "on-click": "activate", + "on-click-middle": "close", + "ignore-list": [ + "Alacritty" + ], + "app_ids-mapping": { + "firefoxdeveloperedition": "firefox-developer-edition", + "jetbrains-datagrip": "DataGrip", + }, + }, + "custom/spotify": { + "exec": "mediaplayer.py --player spotify", + "format": " {}", + "rotate": 0, + "return-type": "json", + "on-click": "playerctl play-pause --player spotify", + "on-click-right": "playerctl next --player spotify", + "on-click-middle": "playerctl previous --player spotify", + "on-scroll-up": "volumecontrol.sh -p spotify i", + "on-scroll-down": "volumecontrol.sh -p spotify d", + "max-length": 25, + "escape": true, + "tooltip": true, + }, + "idle_inhibitor": { + "format": "{icon}", + "rotate": 0, + "format-icons": { + "activated": "󰥔 ", + "deactivated": " ", + }, + }, + "clock": { + "format": "{:%I:%M %p | 󰃭 %d·%m·%y}", + "rotate": 0, + "format-alt": "{:%R 󰃭 %d·%m·%y}", + "tooltip-format": "{calendar}", + "calendar": { + "mode": "month", + "mode-mon-col": 3, + "on-scroll": 1, + "on-click-right": "mode", + "format": { + "months": "{}", + "weekdays": "{}", + "today": "{}", + }, + }, + "actions": { + "on-click-right": "mode", + "on-click-forward": "tz_up", + "on-click-backward": "tz_down", + "on-scroll-up": "shift_up", + "on-scroll-down": "shift_down", + }, + }, + "privacy": { + "icon-size": 14, + "icon-spacing": 5, + "transition-duration": 250, + "modules": [ + { + "type": "screenshare", + "tooltip": true, + "tooltip-icon-size": 24, + }, + { + "type": "audio-in", + "tooltip": true, + "tooltip-icon-size": 24, + }, + ], + }, + "tray": { + "icon-size": 25, + "rotate": 0, + "spacing": 5, + }, + "battery": { + "states": { + "good": 95, + "warning": 30, + "critical": 20, + }, + "format": "{icon} {capacity}%", + "rotate": 0, + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-alt": "{time} {icon}", + "format-icons": [ + "󰂎", + "󰁺", + "󰁻", + "󰁼", + "󰁽", + "󰁾", + "󰁿", + "󰂀", + "󰂁", + "󰂂", + "󰁹" + ], + }, + "backlight": { + "device": "intel_backlight", + "rotate": 0, + "format": "{icon} {percent}%", + "format-icons": [ + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "on-scroll-up": "brightnessctl set 1%+", + "on-scroll-down": "brightnessctl set 1%-", + "min-length": 6, + }, + "network": { + "tooltip": true, + "format-wifi": " ", + "rotate": 0, + "format-ethernet": " {bandwidthDownBytes}  {bandwidthUpBytes} ", + "tooltip-format": "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}", + "format-linked": "󰈀 {ifname} (No IP)", + "format-disconnected": "󰖪 ", + "tooltip-format-disconnected": "Disconnected", + // "format-alt": " {bandwidthDownBytes}  {bandwidthUpBytes}", + "interval": 2, + }, + "pulseaudio": { + "format": "{icon} {volume}", + "rotate": 0, + "format-muted": "婢", + // "on-click": "pavucontrol -t 3", + "on-click": "volumecontrol.sh -s ''", + "on-click-right": "volumecontrol.sh -s ''", + // "on-click-middle": "volumecontrol.sh -o m", + "on-click-middle": "pavucontrol -t 3", + "on-scroll-up": "volumecontrol.sh -o i", + "on-scroll-down": "volumecontrol.sh -o d", + "tooltip-format": "{icon} {desc} // {volume}%", + "scroll-step": 5, + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": [ + " ", + " ", + " " + ], + }, + }, + "pulseaudio#microphone": { + "format": "{format_source}", + "rotate": 0, + "format-source": "", + "format-source-muted": "", + "on-click": "pavucontrol -t 4", + "on-click-middle": "volumecontrol.sh -i m", + "on-scroll-up": "volumecontrol.sh -i i", + "on-scroll-down": "volumecontrol.sh -i d", + "tooltip-format": "{format_source} {source_desc} // {source_volume}%", + "scroll-step": 5, + }, + // modules for padding // + "custom/l_end": { + "format": " ", + "interval": "once", + "tooltip": false, + }, + "custom/r_end": { + "format": " ", + "interval": "once", + "tooltip": false, + }, + "custom/sl_end": { + "format": " ", + "interval": "once", + "tooltip": false, + }, + "custom/sr_end": { + "format": " ", + "interval": "once", + "tooltip": false, + }, + "custom/rl_end": { + "format": " ", + "interval": "once", + "tooltip": false, + }, + "custom/rr_end": { + "format": " ", + "interval": "once", + "tooltip": false, + }, + "custom/padd": { + "format": " ", + "interval": "once", + "tooltip": false, + }, +} diff --git a/.config/waybar/backup/secondary_screen/config.jsonc b/.config/waybar/backup/secondary_screen/config.jsonc new file mode 100644 index 0000000..c1a5b08 --- /dev/null +++ b/.config/waybar/backup/secondary_screen/config.jsonc @@ -0,0 +1,347 @@ +// --// waybar config generated by wbarconfgen.sh //-- // +{ + // sourced from header module // + "output": "HDMI-A-1", + "layer": "top", + "position": "top", + "mod": "dock", + "height": 31, + "exclusive": true, + "passthrough": false, + "gtk-layer-shell": true, + "reload_style_on_change": true, + // positions generated based on config.ctl // + "modules-left": [ + "custom/padd", + "custom/l_end", + "wlr/taskbar", + "custom/r_end", + "custom/l_end", + "hyprland/workspaces", + "custom/r_end", + "custom/padd", + ], + "modules-center": [ + "custom/padd", + "custom/padd" + ], + "modules-right": [ + "custom/padd", + + "custom/l_end", + "custom/notifications", + "custom/r_end", + "custom/l_end", + "idle_inhibitor", + "clock", + "custom/spotify", + "custom/r_end", + "custom/l_end", + "custom/cava", + "mpris", + "custom/r_end", + "custom/padd", + ], + // sourced from modules based on config.ctl // + "custom/notifications": { + "format": "󰂞 ", + "on-click": "swaync-client -t", + }, + + "hyprland/workspaces": { + "disable-scroll": true, + "rotate": 0, + "all-outputs": true, + "active-only": false, + "persistent-workspaces": {}, + }, + "custom/cava": { + "format": "{} ", + "exec": "waybar_cava.sh", + "restart-interval": 1, + "hide-empty": true, + }, + "mpris": { + "format": "{player_icon} {dynamic}", + "rotate": 0, + "format-paused": "{status_icon} {dynamic}", + "player-icons": { + "default": "", + "mpv": "🎵", + }, + "status-icons": { + "paused": "▶", + }, + // "ignored-players": ["firefox"] + "max-length": 1000, + "interval": 1, + }, + "cpu": { + "interval": 10, + "format": "󰍛 {usage}%", + "rotate": 0, + "format-alt": "{icon0}{icon1}{icon2}{icon3}", + "format-icons": [ + "▁", + "▂", + "▃", + "▄", + "▅", + "▆", + "▇", + "█" + ], + }, + "memory": { + "states": { + "c": 90, // critical + "h": 60, // high + "m": 30, // medium + }, + "interval": 30, + "format": "󰾆 {used}gb", + "rotate": 0, + "format-m": "󰾅 {used}gb", + "format-h": "󰓅 {used}gb", + "format-c": " {used}gb", + "format-alt": "󰾆 {percentage}%", + "max-length": 10, + "tooltip": true, + "tooltip-format": "󰾆 {percentage}%\n {used:0.1f}gb/{total:0.1f}gb", + }, + "custom/power": { + "format": " {}", + "rotate": 0, + "exec": "echo ; echo  logout", + "on-click": "logoutlaunch.sh 2", + "on-click-right": "logoutlaunch.sh 1", + "interval": 86400, // once every day + "tooltip": true, + }, + "custom/cliphist": { + "format": " {}", + "rotate": 0, + "exec": "echo ; echo 󰅇 clipboard history", + "on-click": "sleep 0.1 && cliphist.sh c", + "on-click-right": "sleep 0.1 && cliphist.sh d", + "on-click-middle": "sleep 0.1 && cliphist.sh w", + "interval": 86400, // once every day + "tooltip": true, + }, + "wlr/taskbar": { + "format": "{icon}", + "rotate": 0, + "icon-size": 25, + "icon-theme": "Gruvbox-Plus-Dark", + "spacing": 0, + "tooltip-format": "{title}", + "on-click": "activate", + "on-click-middle": "close", + "ignore-list": [ + "Alacritty" + ], + "app_ids-mapping": { + "firefoxdeveloperedition": "firefox-developer-edition", + "jetbrains-datagrip": "DataGrip", + }, + }, + "custom/spotify": { + "exec": "mediaplayer.py --player spotify", + "format": " {}", + "rotate": 0, + "return-type": "json", + "on-click": "playerctl play-pause --player spotify", + "on-click-right": "playerctl next --player spotify", + "on-click-middle": "playerctl previous --player spotify", + "on-scroll-up": "volumecontrol.sh -p spotify i", + "on-scroll-down": "volumecontrol.sh -p spotify d", + "max-length": 25, + "escape": true, + "tooltip": true, + }, + "idle_inhibitor": { + "format": "{icon}", + "rotate": 0, + "format-icons": { + "activated": "󰥔 ", + "deactivated": " ", + }, + }, + "clock": { + "format": "{:%I:%M %p | 󰃭 %d·%m·%y}", + "rotate": 0, + "format-alt": "{:%R 󰃭 %d·%m·%y}", + "tooltip-format": "{calendar}", + "calendar": { + "mode": "month", + "mode-mon-col": 3, + "on-scroll": 1, + "on-click-right": "mode", + "format": { + "months": "{}", + "weekdays": "{}", + "today": "{}", + }, + }, + "actions": { + "on-click-right": "mode", + "on-click-forward": "tz_up", + "on-click-backward": "tz_down", + "on-scroll-up": "shift_up", + "on-scroll-down": "shift_down", + }, + }, + "privacy": { + "icon-size": 14, + "icon-spacing": 5, + "transition-duration": 250, + "modules": [ + { + "type": "screenshare", + "tooltip": true, + "tooltip-icon-size": 24, + }, + { + "type": "audio-in", + "tooltip": true, + "tooltip-icon-size": 24, + }, + ], + }, + "tray": { + "icon-size": 25, + "rotate": 0, + "spacing": 5, + }, + "battery": { + "states": { + "good": 95, + "warning": 30, + "critical": 20, + }, + "format": "{icon} {capacity}%", + "rotate": 0, + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-alt": "{time} {icon}", + "format-icons": [ + "󰂎", + "󰁺", + "󰁻", + "󰁼", + "󰁽", + "󰁾", + "󰁿", + "󰂀", + "󰂁", + "󰂂", + "󰁹" + ], + }, + "backlight": { + "device": "intel_backlight", + "rotate": 0, + "format": "{icon} {percent}%", + "format-icons": [ + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "on-scroll-up": "brightnessctl set 1%+", + "on-scroll-down": "brightnessctl set 1%-", + "min-length": 6, + }, + "network": { + "tooltip": true, + "format-wifi": " ", + "rotate": 0, + "format-ethernet": " {bandwidthDownBytes}  {bandwidthUpBytes}", + "tooltip-format": "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}", + "format-linked": "󰈀 {ifname} (No IP)", + "format-disconnected": "󰖪 ", + "tooltip-format-disconnected": "Disconnected", + // "format-alt": " {bandwidthDownBytes}  {bandwidthUpBytes}", + "interval": 2, + }, + "pulseaudio": { + "format": "{icon} {volume}", + "rotate": 0, + "format-muted": "婢", + // "on-click": "pavucontrol -t 3", + "on-click": "volumecontrol.sh -s ''", + "on-click-right": "volumecontrol.sh -s ''", + // "on-click-middle": "volumecontrol.sh -o m", + "on-click-middle": "pavucontrol -t 3", + "on-scroll-up": "volumecontrol.sh -o i", + "on-scroll-down": "volumecontrol.sh -o d", + "tooltip-format": "{icon} {desc} // {volume}%", + "scroll-step": 5, + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": [ + " ", + " ", + " " + ], + }, + }, + "pulseaudio#microphone": { + "format": "{format_source}", + "rotate": 0, + "format-source": "", + "format-source-muted": "", + "on-click": "pavucontrol -t 4", + "on-click-middle": "volumecontrol.sh -i m", + "on-scroll-up": "volumecontrol.sh -i i", + "on-scroll-down": "volumecontrol.sh -i d", + "tooltip-format": "{format_source} {source_desc} // {source_volume}%", + "scroll-step": 5, + }, + // modules for padding // + "custom/l_end": { + "format": " ", + "interval": "once", + "tooltip": false, + }, + "custom/r_end": { + "format": " ", + "interval": "once", + "tooltip": false, + }, + "custom/sl_end": { + "format": " ", + "interval": "once", + "tooltip": false, + }, + "custom/sr_end": { + "format": " ", + "interval": "once", + "tooltip": false, + }, + "custom/rl_end": { + "format": " ", + "interval": "once", + "tooltip": false, + }, + "custom/rr_end": { + "format": " ", + "interval": "once", + "tooltip": false, + }, + "custom/padd": { + "format": " ", + "interval": "once", + "tooltip": false, + }, +} diff --git a/.config/waybar/primary_screen/config.jsonc b/.config/waybar/primary_screen/config.jsonc index ce965ad..f8f50d7 100644 --- a/.config/waybar/primary_screen/config.jsonc +++ b/.config/waybar/primary_screen/config.jsonc @@ -13,53 +13,72 @@ // positions generated based on config.ctl // "modules-left": [ "custom/padd", - "custom/l_end", "custom/power", "custom/cliphist", "custom/r_end", - "custom/l_end", "privacy", "tray", "custom/r_end", - "custom/padd", ], "modules-center": [ "custom/padd", - + "custom/l_end", "network", "custom/r_end", - "custom/l_end", "memory", "cpu", "custom/r_end", - "custom/l_end", "idle_inhibitor", "clock", "custom/r_end", - "custom/padd", ], "modules-right": [ "custom/padd", - "custom/l_end", "backlight", "pulseaudio", "custom/r_end", - "custom/l_end", "wlr/taskbar", "custom/r_end", - "custom/padd", ], // sourced from modules based on config.ctl // + "custom/notifications": { + "format": "{icon} {}", + "format-icons": { + "email-notification": "", + "chat-notification": "󱋊", + "warning-notification": "󱨪", + "error-notification": "󱨪", + "network-notification": "󱂇", + "battery-notification": "󰁺", + "update-notification": "󰚰", + "music-notification": "󰝚", + "volume-notification": "󰕿", + "notification": "", + "dnd": "", + "none": "" + }, + "return-type": "json", + "exec-if": "which dunstctl", + "exec": "notifications.py", + "on-scroll-down": "sleep 0.1 && dunstctl history-pop", + "on-click": "dunstctl set-paused toggle", + "on-click-middle": "dunstctl history-clear", + "on-click-right": "dunstctl close-all", + "interval": 1, + "tooltip": true, + "escape": true + }, + "hyprland/workspaces": { "disable-scroll": true, "rotate": 0, @@ -93,7 +112,16 @@ "format": "󰍛 {usage}%", "rotate": 0, "format-alt": "{icon0}{icon1}{icon2}{icon3}", - "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"], + "format-icons": [ + "▁", + "▂", + "▃", + "▄", + "▅", + "▆", + "▇", + "█" + ], }, "memory": { "states": { @@ -140,7 +168,9 @@ "tooltip-format": "{title}", "on-click": "activate", "on-click-middle": "close", - "ignore-list": ["Alacritty"], + "ignore-list": [ + "Alacritty" + ], "app_ids-mapping": { "firefoxdeveloperedition": "firefox-developer-edition", "jetbrains-datagrip": "DataGrip", @@ -184,7 +214,6 @@ "today": "{}", }, }, - "actions": { "on-click-right": "mode", "on-click-forward": "tz_up", @@ -226,13 +255,35 @@ "format-charging": " {capacity}%", "format-plugged": " {capacity}%", "format-alt": "{time} {icon}", - "format-icons": ["󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"], + "format-icons": [ + "󰂎", + "󰁺", + "󰁻", + "󰁼", + "󰁽", + "󰁾", + "󰁿", + "󰂀", + "󰂁", + "󰂂", + "󰁹" + ], }, "backlight": { "device": "intel_backlight", "rotate": 0, "format": "{icon} {percent}%", - "format-icons": ["", "", "", "", "", "", "", "", ""], + "format-icons": [ + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], "on-scroll-up": "brightnessctl set 1%+", "on-scroll-down": "brightnessctl set 1%-", "min-length": 6, @@ -269,7 +320,11 @@ "phone": "", "portable": "", "car": "", - "default": [" ", " ", " "], + "default": [ + " ", + " ", + " " + ], }, }, "pulseaudio#microphone": { diff --git a/.config/waybar/secondary_screen/config.jsonc b/.config/waybar/secondary_screen/config.jsonc index 40f7c69..13a5b12 100644 --- a/.config/waybar/secondary_screen/config.jsonc +++ b/.config/waybar/secondary_screen/config.jsonc @@ -13,38 +13,43 @@ // positions generated based on config.ctl // "modules-left": [ "custom/padd", - "custom/l_end", "wlr/taskbar", "custom/r_end", - "custom/l_end", "hyprland/workspaces", "custom/r_end", - "custom/padd", ], "modules-center": [ "custom/padd", - "custom/padd", + "custom/padd" ], "modules-right": [ "custom/padd", - + "custom/l_end", + "memory", + "cpu", + "custom/r_end", + "custom/l_end", + "custom/notifications", + "custom/r_end", "custom/l_end", "idle_inhibitor", "clock", "custom/spotify", "custom/r_end", - "custom/l_end", "custom/cava", "mpris", "custom/r_end", - "custom/padd", ], // sourced from modules based on config.ctl // + "custom/notifications": { + "format": "󰂞 ", + "on-click": "swaync-client -t", + }, "hyprland/workspaces": { "disable-scroll": true, "rotate": 0, @@ -78,7 +83,16 @@ "format": "󰍛 {usage}%", "rotate": 0, "format-alt": "{icon0}{icon1}{icon2}{icon3}", - "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"], + "format-icons": [ + "▁", + "▂", + "▃", + "▄", + "▅", + "▆", + "▇", + "█" + ], }, "memory": { "states": { @@ -125,7 +139,9 @@ "tooltip-format": "{title}", "on-click": "activate", "on-click-middle": "close", - "ignore-list": ["Alacritty"], + "ignore-list": [ + "Alacritty" + ], "app_ids-mapping": { "firefoxdeveloperedition": "firefox-developer-edition", "jetbrains-datagrip": "DataGrip", @@ -169,7 +185,6 @@ "today": "{}", }, }, - "actions": { "on-click-right": "mode", "on-click-forward": "tz_up", @@ -211,13 +226,35 @@ "format-charging": " {capacity}%", "format-plugged": " {capacity}%", "format-alt": "{time} {icon}", - "format-icons": ["󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"], + "format-icons": [ + "󰂎", + "󰁺", + "󰁻", + "󰁼", + "󰁽", + "󰁾", + "󰁿", + "󰂀", + "󰂁", + "󰂂", + "󰁹" + ], }, "backlight": { "device": "intel_backlight", "rotate": 0, "format": "{icon} {percent}%", - "format-icons": ["", "", "", "", "", "", "", "", ""], + "format-icons": [ + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], "on-scroll-up": "brightnessctl set 1%+", "on-scroll-down": "brightnessctl set 1%-", "min-length": 6, @@ -254,7 +291,11 @@ "phone": "", "portable": "", "car": "", - "default": [" ", " ", " "], + "default": [ + " ", + " ", + " " + ], }, }, "pulseaudio#microphone": {