Add all config files to Linux branch

This commit is contained in:
Eduardo Cueto-Mendoza 2025-01-16 15:08:57 +00:00
parent 77ba9e34c9
commit ea408fda13
Signed by: TastyPancakes
GPG Key ID: 941DF56C7242C3F1
141 changed files with 8434 additions and 0 deletions

2
.clangd Executable file
View File

@ -0,0 +1,2 @@
CompileFlags:
Add: [-std=c++20]

28
.config/LICENSE Executable file
View File

@ -0,0 +1,28 @@
BSD 3-Clause License
Copyright (c) 2023, Eduardo Cueto-Mendoza
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,32 @@
[general]
live_config_reload = true
import = [
"~/.config/alacritty/themes/Homebrew.toml"
]
[cursor.style]
shape = "Block"
[font]
size = 20
normal = { family = "Terminess Nerd Font", style = "Regular" }
bold = { family = "Terminess Nerd Font", style = "Bold" }
italic = { family = "Terminess Nerd Font", style = "Italic" }
bold_italic = { family = "Terminess Nerd Font", style = "Bold Italic" }
builtin_box_drawing = false
[scrolling]
history = 100000
[selection]
save_to_clipboard = true
[window]
opacity = 0.85
startup_mode = "Maximized"
[keyboard]
bindings = [
{key="Space", mods="Command | Shift", mode="AppCursor | AppKeypad | ~Search | Alt | Vi", command="ToggleViMode"},
]

View File

@ -0,0 +1,35 @@
# Colors (Homebrew)
[colors.bright]
black = '#666666'
#blue = '#0000ff'
blue = '#0000b2'
cyan = '#00e5e5'
green = '#00d900'
magenta = '#e500e5'
red = '#e50000'
white = '#e5e5e5'
yellow = '#e5e500'
[colors.cursor]
cursor = '#23ff18'
text = '#ff0018'
[colors.normal]
black = '#000000'
#blue = '#0000b2'
blue = '#0000ff'
cyan = '#00a6b2'
green = '#00a600'
magenta = '#b200b2'
red = '#990000'
white = '#bfbfbf'
yellow = '#999900'
[colors.primary]
background = '#000000'
foreground = '#00ff00'
[colors.selection]
background = '#083905'
text = '#ffffff'

View File

@ -0,0 +1,36 @@
# github Alacritty Colors
# Default colors
[colors.primary]
background = '#24292e'
foreground = '#d1d5da'
# Normal colors
[colors.normal]
black = '#586069'
red = '#ea4a5a'
green = '#34d058'
yellow = '#ffea7f'
blue = '#2188ff'
magenta = '#b392f0'
cyan = '#39c5cf'
white = '#d1d5da'
# Bright colors
[colors.bright]
black = '#959da5'
red = '#f97583'
green = '#85e89d'
yellow = '#ffea7f'
blue = '#79b8ff'
magenta = '#b392f0'
cyan = '#56d4dd'
white = '#fafbfc'
[[colors.indexed_colors]]
index = 16
color = '#d18616'
[[colors.indexed_colors]]
index = 17
color = '#f97583'

View File

@ -0,0 +1,36 @@
# github Alacritty Colors
# Default colors
[colors.primary]
background = '#0d1117'
foreground = '#b3b1ad'
# Normal colors
[colors.normal]
black = '#484f58'
red = '#ff7b72'
green = '#3fb950'
yellow = '#d29922'
blue = '#58a6ff'
magenta = '#bc8cff'
cyan = '#39c5cf'
white = '#b1bac4'
# Bright colors
[colors.bright]
black = '#6e7681'
red = '#ffa198'
green = '#56d364'
yellow = '#e3b341'
blue = '#79c0ff'
magenta = '#d2a8ff'
cyan = '#56d4dd'
white = '#f0f6fc'
[[colors.indexed_colors]]
index = 16
color = '#d18616'
[[colors.indexed_colors]]
index = 17
color = '#ffa198'

View File

@ -0,0 +1,36 @@
# github Alacritty Colors
# Default colors
[colors.primary]
background = '#0d1117'
foreground = '#b3b1ad'
# Normal colors
[colors.normal]
black = '#484f58'
red = '#ff7b72'
green = '#3fb950'
yellow = '#d29922'
blue = '#58a6ff'
magenta = '#bc8cff'
cyan = '#39c5cf'
white = '#b1bac4'
# Bright colors
[colors.bright]
black = '#6e7681'
red = '#ffa198'
green = '#56d364'
yellow = '#e3b341'
blue = '#79c0ff'
magenta = '#d2a8ff'
cyan = '#56d4dd'
white = '#f0f6fc'
[[colors.indexed_colors]]
index = 16
color = '#d18616'
[[colors.indexed_colors]]
index = 17
color = '#ffa198'

View File

@ -0,0 +1,36 @@
# github Alacritty Colors
# Default colors
[colors.primary]
background = '#22272e'
foreground = '#768390'
# Normal colors
[colors.normal]
black = '#545d68'
red = '#f47067'
green = '#57ab5a'
yellow = '#c69026'
blue = '#539bf5'
magenta = '#b083f0'
cyan = '#39c5cf'
white = '#909dab'
# Bright colors
[colors.bright]
black = '#636e7b'
red = '#ff938a'
green = '#6bc46d'
yellow = '#daaa3f'
blue = '#6cb6ff'
magenta = '#dcbdfb'
cyan = '#56d4dd'
white = '#cdd9e5'
[[colors.indexed_colors]]
index = 16
color = '#d18616'
[[colors.indexed_colors]]
index = 17
color = '#ff938a'

View File

@ -0,0 +1,33 @@
# (Github Dark High Contrast) Colors for Alacritty
# Default colors
[colors.primary]
background = '#0a0c10'
foreground = '#f0f3f6'
# Cursor colors
[colors.cursor]
text = '#0a0c10'
cursor = '#f0f3f6'
# Normal colors
[colors.normal]
black = '#7a828e'
red = '#ff9492'
green = '#26cd4d'
yellow = '#f0b72f'
blue = '#71b7ff'
magenta = '#cb9eff'
cyan = '#39c5cf'
white = '#d9dee3'
# Bright colors
[colors.bright]
black = '#9ea7b3'
red = '#ffb1af'
green = '#4ae168'
yellow = '#f7c843'
blue = '#91cbff'
magenta = '#cb9eff'
cyan = '#39c5cf'
white = '#d9dee3'

View File

@ -0,0 +1,33 @@
# (Github Dark Tritanopia) Colors for Alacritty
# Default colors
[colors.primary]
background = '#0d1117'
foreground = '#c9d1d9'
# Cursor colors
[colors.cursor]
text = '#0d1117'
cursor = '#c9d1d9'
# Normal colors
[colors.normal]
black = '#484f58'
red = '#ff7b72'
green = '#58a6ff'
yellow = '#d29922'
blue = '#58a6ff'
magenta = '#bc8cff'
cyan = '#39c5cf'
white = '#b1bac4'
# Bright colors
[colors.bright]
black = '#6e7681'
red = '#ffa198'
green = '#79c0ff'
yellow = '#e3b341'
blue = '#79c0ff'
magenta = '#bc8cff'
cyan = '#39c5cf'
white = '#b1bac4'

View File

@ -0,0 +1,36 @@
# github Alacritty Colors
# Default colors
[colors.primary]
background = '#ffffff'
foreground = '#24292f'
# Normal colors
[colors.normal]
black = '#24292e'
red = '#d73a49'
green = '#28a745'
yellow = '#dbab09'
blue = '#0366d6'
magenta = '#5a32a3'
cyan = '#0598bc'
white = '#6a737d'
# Bright colors
[colors.bright]
black = '#959da5'
red = '#cb2431'
green = '#22863a'
yellow = '#b08800'
blue = '#005cc5'
magenta = '#5a32a3'
cyan = '#3192aa'
white = '#d1d5da'
[[colors.indexed_colors]]
index = 16
color = '#d18616'
[[colors.indexed_colors]]
index = 17
color = '#cb2431'

View File

@ -0,0 +1,36 @@
# github Alacritty Colors
# Default colors
[colors.primary]
background = '#ffffff'
foreground = '#0E1116'
# Normal colors
[colors.normal]
black = '#24292f'
red = '#cf222e'
green = '#116329'
yellow = '#4d2d00'
blue = '#0969da'
magenta = '#8250df'
cyan = '#1b7c83'
white = '#6e7781'
# Bright colors
[colors.bright]
black = '#57606a'
red = '#a40e26'
green = '#1a7f37'
yellow = '#633c01'
blue = '#218bff'
magenta = '#a475f9'
cyan = '#3192aa'
white = '#8c959f'
[[colors.indexed_colors]]
index = 16
color = '#d18616'
[[colors.indexed_colors]]
index = 17
color = '#a40e26'

View File

@ -0,0 +1,36 @@
# github Alacritty Colors
# Default colors
[colors.primary]
background = '#ffffff'
foreground = '#0E1116'
# Normal colors
[colors.normal]
black = '#24292f'
red = '#cf222e'
green = '#116329'
yellow = '#4d2d00'
blue = '#0969da'
magenta = '#8250df'
cyan = '#1b7c83'
white = '#6e7781'
# Bright colors
[colors.bright]
black = '#57606a'
red = '#a40e26'
green = '#1a7f37'
yellow = '#633c01'
blue = '#218bff'
magenta = '#a475f9'
cyan = '#3192aa'
white = '#8c959f'
[[colors.indexed_colors]]
index = 16
color = '#d18616'
[[colors.indexed_colors]]
index = 17
color = '#a40e26'

View File

@ -0,0 +1,33 @@
# (Github Light High Contrast) Colors for Alacritty
# Default colors
[colors.primary]
background = '#ffffff'
foreground = '#010409'
# Cursor colors
[colors.cursor]
text = '#ffffff'
cursor = '#0e1116'
# Normal colors
[colors.normal]
black = '#0e1116'
red = '#a0111f'
green = '#024c1a'
yellow = '#3f2200'
blue = '#0349b4'
magenta = '#622cbc'
cyan = '#1b7c83'
white = '#66707b'
# Bright colors
[colors.bright]
black = '#4b535d'
red = '#86061d'
green = '#055d20'
yellow = '#4e2c00'
blue = '#1168e3'
magenta = '#622cbc'
cyan = '#1b7c83'
white = '#66707b'

View File

@ -0,0 +1,33 @@
# (Github Light Tritanopia) Colors for Alacritty
# Default colors
[colors.primary]
background = '#ffffff'
foreground = '#1b1f24'
# Cursor colors
[colors.cursor]
text = '#ffffff'
cursor = '#24292f'
# Normal colors
[colors.normal]
black = '#24292f'
red = '#cf222e'
green = '#0550ae'
yellow = '#4d2d00'
blue = '#0969da'
magenta = '#8250df'
cyan = '#1b7c83'
white = '#6e7781'
# Bright colors
[colors.bright]
black = '#57606a'
red = '#a40e26'
green = '#0969da'
yellow = '#633c01'
blue = '#218bff'
magenta = '#8250df'
cyan = '#1b7c83'
white = '#6e7781'

View File

@ -0,0 +1,30 @@
# Default colors
[colors.primary]
background = '#000000'
foreground = '#19a33a'
[colors.cursor]
text = '#122637'
cursor = '#14f105'
# Normal colors
[colors.normal]
black = '#282e2a'
red = '#70a542'
green = '#00ca07'
yellow = '#5fde6d'
blue = '#5f9d75'
magenta = '#678f71'
cyan = '#5e8d87'
white = '#718070'
# Bright colors
[colors.bright]
black = '#394738'
red = '#66cc7b'
green = '#03e880'
yellow = '#74f0a3'
blue = '#81beba'
magenta = '#94bb9b'
cyan = '#8abeb7'
white = '#b2cab6'

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

File diff suppressed because it is too large Load Diff

1
.config/fish/.gitignore vendored Executable file
View File

@ -0,0 +1 @@
fish_variables

View File

@ -0,0 +1,131 @@
#
# AUTO GENERATED BY 'fish-lsp'
#
# * Any command should generate the completions file
#
# >_ fish-lsp complete > ~/.config/fish/completions/fish-lsp.fish
# >_ fish-lsp complete --fish > ~/.config/fish/completions/fish-lsp.fish
# >_ yarn install # from inside the 'fish-lsp'
#
# * You can test the completions by editing:
#
# ~/.config/fish/completions/fish-lsp.fish
#
# or by using the command:
#
# >_ fish-lsp complete
#
# to visually check what is wrong
#
# * For more info, try editing the generated output inside:
#
# ~/...install_path.../fish-lsp/src/utils/get-lsp-completions.ts
#
# Returns exit code of 0 if any command (argv[1..-1]) appears once, ignores flags.
function __fish_lsp_using_command
set -l commands $argv
set -l cmd (commandline -opc)
if test (count $cmd) -gt 1
set -l command_seen_once 1
for c in $cmd[2..-1]
switch $c
case '-*'
continue
case $commands
# If the command is seen more than once then return 1
if test $command_seen_once -eq 1
set command_seen_once 0
else
return 1
end
case '*'
if test $command_seen_once -eq 0
return 0
else
return 1
end
end
end
return $command_seen_once
end
return 1
end
# disable file completions
complete -c fish-lsp -f
complete -c fish-lsp -n "__fish_use_subcommand" -a "
start\t'subcmd to start the lsp using stdin/stdout'
logger\t'test the logger by displaying it'
info\t'show the build info of fish-lsp'
url\t'show a helpful url related to the fish-lsp'
complete\t'generate completions file for ~/.config/fish/completions'
env\t'generate fish shell env variables to be used by lsp'"
set __fish_lsp_subcommands start
# fish_lsp [start] --<TAB>
complete -c fish-lsp -n '__fish_seen_subcommand_from $__fish_lsp_subcommands' -a "
--dump\t'dump output and stop server'
--enable\t'enable feature'
--disable\t'disable feature'"
# fish-lsp url --<TAB>
complete -c fish-lsp -n "__fish_seen_subcommand_from url" -a "
--repo 'show git url'
--git 'show git url'
--npm 'show npm url'
--homepage 'show homepage url'
--contributions 'show git contributions url'
--wiki 'show git wiki url'
--issues 'show git issues url'
--report 'show git issues url'
--discussions 'show git discussions url'
--clients-repo 'show git clients-repo url'
--sources 'show useful list of sources'"
# fish-lsp complete <TAB>
complete -c fish-lsp -n __fish_use_subcommand -a complete -d 'completion utils for fish-lsp cli'
complete -c fish-lsp -n '__fish_lsp_using_command complete; and not __fish_contains_opt features' -l features -d 'show features'
complete -c fish-lsp -n '__fish_lsp_using_command complete; and not __fish_contains_opt fish' -l fish -d 'show completion/fish-lsp.fish'
complete -c fish-lsp -n '__fish_lsp_using_command complete; and not __fish_contains_opt names' -l names -d 'show feature names of completions'
complete -c fish-lsp -n '__fish_lsp_using_command complete; and not __fish_contains_opt toggle' -l toggle -d 'show feature names of completions'
# fish-lsp info --<TAB>
complete -c fish-lsp -n '__fish_lsp_using_command info; and not __fish_contains_opt bin' -l bin -d 'show the binary path'
complete -c fish-lsp -n '__fish_lsp_using_command info; and not __fish_contains_opt repo' -l repo -d 'show the repo path'
complete -c fish-lsp -n '__fish_lsp_using_command info; and not __fish_contains_opt time' -l time -d 'show the build-time'
complete -c fish-lsp -n '__fish_lsp_using_command info; and not __fish_contains_opt env' -l env -d 'show the env-variables used'
complete -c fish-lsp -n '__fish_lsp_using_command info; and not __fish_contains_opt lsp-version' -l lsp-version -d 'show the npm package for the lsp-version'
complete -c fish-lsp -n '__fish_lsp_using_command info; and not __fish_contains_opt capabilities' -l capabilities -d 'show the lsp capabilities implemented'
complete -c fish-lsp -n '__fish_lsp_using_command info; and not __fish_contains_opt man-file' -l man-file -d 'show man file path'
complete -c fish-lsp -n '__fish_lsp_using_command info; and not __fish_contains_opt logs-file' -l logs-file -d 'show logs.txt file path'
complete -c fish-lsp -n '__fish_lsp_using_command info; and not __fish_contains_opt more' -l more -d 'show more info'
# fish-lsp logger --<TAB>
complete -c fish-lsp -n __fish_use_subcommand -x -a logger -d 'logger utilities'
complete -c fish-lsp -n '__fish_lsp_using_command logger; and not __fish_contains_opt -s s show' -s s -l show -d 'show the "logs.txt" file'
complete -c fish-lsp -n '__fish_lsp_using_command logger; and not __fish_contains_opt -s c clear' -s c -l clear -d 'clear the "logs.txt" file'
complete -c fish-lsp -n '__fish_lsp_using_command logger; and not __fish_contains_opt -s q quiet' -s q -l quiet -d 'only write to "logs.txt" file'
complete -c fish-lsp -n '__fish_lsp_using_command logger; and not __fish_contains_opt -s d date' -s d -l date -d 'write date to "logs.txt" file'
complete -c fish-lsp -n '__fish_lsp_using_command logger; and not __fish_contains_opt config' -l config -d 'show the logger config'
# print all $fish_lsp_submcommands
function _fish_lsp_get_features
printf %b\n complete hover rename reference formatting codeAction codeLens folding signature executeCommand inlayHint highlight diagnostic
end
# fish-lsp env --<TAB>
complete -c fish-lsp -n __fish_use_subcommand -x -a env -d 'generate fish shell env variables to be used by lsp'
complete -c fish-lsp -n '__fish_lsp_using_command env; and not __fish_contains_opt -s s show; and not __fish_contains_opt -s c create' -s s -l show -d 'show the current fish-lsp env variables'
complete -c fish-lsp -n '__fish_lsp_using_command env; and not __fish_contains_opt -s c create; and not __fish_contains_opt -s s show' -s c -l create -d 'build initial fish-lsp env variables'
complete -c fish-lsp -n '__fish_lsp_using_command env; and not __fish_contains_opt no-comments' -l no-comments -d 'skip outputting comments'
# COMPLETION: fish-lsp subcmd <option> [VALUE] (`fish-lsp start --enable ...`)
complete -c fish-lsp -n '__fish_seen_subcommand_from $__fish_lsp_subcommands' -l enable -xa '(_fish_lsp_get_features)'
complete -c fish-lsp -n '__fish_seen_subcommand_from $__fish_lsp_subcommands' -l disable -xa '(_fish_lsp_get_features)'
# built by the command:
# fish-lsp complete ~/.config/fish/completions/fish-lsp.fish

View File

@ -0,0 +1,7 @@
complete --command fisher --exclusive --long help --description "Print help"
complete --command fisher --exclusive --long version --description "Print version"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex"
complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)"

View File

@ -0,0 +1,8 @@
complete fzf_configure_bindings --no-files
complete fzf_configure_bindings --long help --short h --description "Print help" --condition "not __fish_seen_argument --help -h"
complete fzf_configure_bindings --long directory --description "Change the key binding for Search Directory" --condition "not __fish_seen_argument --directory"
complete fzf_configure_bindings --long git_log --description "Change the key binding for Search Git Log" --condition "not __fish_seen_argument --git_log"
complete fzf_configure_bindings --long git_status --description "Change the key binding for Search Git Status" --condition "not __fish_seen_argument --git_status"
complete fzf_configure_bindings --long history --description "Change the key binding for Search History" --condition "not __fish_seen_argument --history"
complete fzf_configure_bindings --long processes --description "Change the key binding for Search Processes" --condition "not __fish_seen_argument --processes"
complete fzf_configure_bindings --long variables --description "Change the key binding for Search Variables" --condition "not __fish_seen_argument --variables"

View File

@ -0,0 +1,28 @@
# fzf.fish is only meant to be used in interactive mode. If not in interactive mode and not in CI, skip the config to speed up shell startup
if not status is-interactive && test "$CI" != true
exit
end
# Because of scoping rules, to capture the shell variables exactly as they are, we must read
# them before even executing _fzf_search_variables. We use psub to store the
# variables' info in temporary files and pass in the filenames as arguments.
# This variable is global so that it can be referenced by fzf_configure_bindings and in tests
set --global _fzf_search_vars_command '_fzf_search_variables (set --show | psub) (set --names | psub)'
# Install the default bindings, which are mnemonic and minimally conflict with fish's preset bindings
fzf_configure_bindings
# Doesn't erase autoloaded _fzf_* functions because they are not easily accessible once key bindings are erased
function _fzf_uninstall --on-event fzf_uninstall
_fzf_uninstall_bindings
set --erase _fzf_search_vars_command
functions --erase _fzf_uninstall _fzf_migration_message _fzf_uninstall_bindings fzf_configure_bindings
complete --erase fzf_configure_bindings
set_color cyan
echo "fzf.fish uninstalled."
echo "You may need to manually remove fzf_configure_bindings from your config.fish if you were using custom key bindings."
set_color normal
end

14
.config/fish/conf.d/rustup.fish Executable file
View File

@ -0,0 +1,14 @@
switch (uname)
case FreeBSD NetBSD DragonFly
echo Hi Beastie!
case Linux
#echo Hi Tux!
set -x RUSTUP_HOME '/usr/local/share/rustup'
case Darwin
#echo Hi Hexley!
source "$HOME/.cargo/env.fish"
case '*'
echo Hi, stranger!
end

237
.config/fish/config.fish Executable file
View File

@ -0,0 +1,237 @@
switch (uname)
case FreeBSD NetBSD DragonFly
echo Hi Beastie!
case Linux
#echo Hi Tux!
fish_vi_key_bindings
set ID (id -u)
# Start tmux
if not set -q TMUX; and [ $ID != 0 ]
echo "Setting tmux"
#set -g TMUX tmux new-session -d -s base
#eval $TMUX
#tmux attach-session -d -t base
eval tmux
end
# PATH
# Local PATH
fish_add_path -a $HOME/.local/bin
# Mason PATH
fish_add_path -a $HOME/.local/share/nvim/mason/bin
# sbin PATH
fish_add_path -a /sbin
fish_add_path -a /usr/sbin
# Rust
fish_add_path -a /usr/local/share/cargo/bin
# Android
fish_add_path -a /usr/share/android-tools
# rocm
fish_add_path -a /opt/rocm/bin
# Java
#fish_add_path -a /usr/local/jdk-21/bin
# Ltex-LS
#fish_add_path -a /usr/local/share/ltex-ls-16.0.0/bin
# pyenv
set -x PYENV_ROOT /usr/share/pyenv
fish_add_path -a $PYENV_ROOT/bin
pyenv init - fish | source
status --is-interactive; and pyenv virtualenv-init - | source
# Zig
fish_add_path -a /usr/share/zig
# VARIABLES
# For Torch
set -gx HSA_OVERRIDE_GFX_VERSION '10.3.0'
# bat
set -x BAT_THEME 'tokyonight_night'
# Rust
set -gx CARGO_HOME '/usr/local/share/cargo'
# ssh and gpg
set -x GPG_TTY (tty)
set -x SSH_AUTH_SOCK (gpgconf --list-dirs agent-ssh-socket)
gpgconf --launch gpg-agent
gpg-connect-agent updatestartuptty /bye > /dev/null
# Editor
set -gx EDITOR 'nvim'
# Manpager
#set -gx PAGER 'nvim +Man!'
# Term for ssh
#set -gx TERM 'xterm-256color'
# fzf
set -x FZF_CTRL_T_OPTS "--preview 'bat -n --color=always --line-range :500 {}'"
set -x FZF_ALT_C_OPTS "--preview 'eza --tree --color=always {} | head 200'"
# ALIAS
# convinience
alias doas="sudo"
# Neovim
alias vi="nvim"
alias vim="nvim"
# cat
alias cat="bat"
# ls
alias ls="eza --color=always --long --git --icons=always --group"
# mutt
#alias mutt='neomutt'
# rsync
alias rsync='rsync -h -v -r -P -p -t --stats'
# wget folder
alias wget_f='wget -r -np -R "index.html*"'
# btop
alias top='btop'
# fzf
fzf --fish | source
# git signed
function git --wraps git
switch $argv[1]
case commit
/usr/bin/git commit -S
case tag
/usr/bin/git tag -S
case '*'
/usr/bin/git $argv
end
end
case Darwin
#echo Hi Hexley!
fish_vi_key_bindings
set ID (id -u)
## Start tmux
#if not set -q TMUX; and [ $ID != 0 ]
# echo "Setting tmux"
# set -g TMUX tmux new-session -d -s base
# eval $TMUX
# tmux attach-session -d -t base
#end
# PATH
# Homebrew
fish_add_path -a /opt/homebrew/bin
fish_add_path -a /opt/homebrew/sbin
# Local PATH
fish_add_path -a $HOME/.local/bin
# Mason PATH
fish_add_path -a $HOME/.local/share/nvim/mason/bin
# Java
fish_add_path -a /opt/homebrew/Cellar/openjdk/23.0.1/bin
# Ruby
fish_add_path -a /opt/homebrew/opt/ruby/bin
fish_add_path -a /opt/homebrew/lib/ruby/gems/3.4.0/bin
# Zig
fish_add_path -a /opt/zig
# pyenv
set -x PYENV_ROOT "$HOME/.pyenv"
fish_add_path -a $PYENV_ROOT/bin
pyenv init - | source
status --is-interactive; and pyenv virtualenv-init - | source
# VARIABLES
if [ $ID != 0 ]
# ssh and gpg
set -x GPG_TTY (tty)
set -x SSH_AUTH_SOCK (gpgconf --list-dirs agent-ssh-socket)
gpgconf --launch gpg-agent
gpg-connect-agent updatestartuptty /bye > /dev/null
end
# Editor
set -x EDITOR 'nvim'
# Manpager
set -x PAGER 'nvim +Man!'
# Term for ssh
#export TERM='xterm-256color'
# Homebrew
set -x HOMEBREW_NO_AUTO_UPDATE 1
set -x HOMEBREW_NO_ENV_HINTS 1
# DBUS for zathura
#export DBUS_LAUNCHD_SESSION_BUS_SOCKET=/tmp/(id -u)
#export DBUS_SESSION_BUS_ADDRESS='unix:path='$DBUS_LAUNCHD_SESSION_BUS_SOCKET
#if pgrep -x dbus-daemon &> /dev/null
# printf (_ "%sdbus-daemon%s is running\n") (set_color red) (set_color normal)
#else
# #echo "dbus-daemon is not running"
# dbus-daemon --fork --session --address=$DBUS_SESSION_BUS_ADDRESS
#end
# ALIAS
# convinience
alias doas='sudo'
# ls
alias ls='colorls'
# neovim
alias vi='nvim'
alias vim='nvim'
# mutt
#alias mutt='neomutt'
# rsync
alias rsync='rsync -h -v -r -P -p -t --stats'
# wget folder
alias wget_f='wget -r -np -R "index.html*"'
# btop
alias top='btop'
# git signed
function git --wraps git
switch $argv[1]
case commit
/usr/bin/git commit -S
case tag
/usr/bin/git tag -S
case '*'
/usr/bin/git $argv
end
end
case '*'
echo Hi, stranger!
end

View File

@ -0,0 +1,2 @@
jorgebucaran/fisher
patrickf1/fzf.fish

View File

@ -0,0 +1,43 @@
function _fzf_configure_bindings_help --description "Prints the help message for fzf_configure_bindings."
echo "\
USAGE:
fzf_configure_bindings [--COMMAND=[KEY_SEQUENCE]...]
DESCRIPTION
fzf_configure_bindings installs key bindings for fzf.fish's commands and erases any bindings it
previously installed. It installs bindings for both default and insert modes. fzf.fish executes
it without options on fish startup to install the out-of-the-box key bindings.
By default, commands are bound to a mnemonic key sequence, shown below. Each command's binding
can be configured using a namesake corresponding option:
COMMAND | DEFAULT KEY SEQUENCE | CORRESPONDING OPTION
Search Directory | Ctrl+Alt+F (F for file) | --directory
Search Git Log | Ctrl+Alt+L (L for log) | --git_log
Search Git Status | Ctrl+Alt+S (S for status) | --git_status
Search History | Ctrl+R (R for reverse) | --history
Search Processes | Ctrl+Alt+P (P for process) | --processes
Search Variables | Ctrl+V (V for variable) | --variables
Override a command's binding by specifying its corresponding option with the desired key
sequence. Disable a command's binding by specifying its corresponding option with no value.
Because fzf_configure_bindings erases bindings it previously installed, it can be cleanly
executed multiple times. Once the desired fzf_configure_bindings command has been found, add it
to your config.fish in order to persist the customized bindings.
In terms of validation, fzf_configure_bindings fails if passed unknown options. It expects an
equals sign between an option's name and value. However, it does not validate key sequences.
Pass -h or --help to print this help message and exit.
EXAMPLES
Default bindings but bind Search Directory to Ctrl+F and Search Variables to Ctrl+Alt+V
\$ fzf_configure_bindings --directory=\cf --variables=\e\cv
Default bindings but disable Search History
\$ fzf_configure_bindings --history=
An agglomeration of different options
\$ fzf_configure_bindings --git_status=\cg --history=\ch --variables= --processes=
SEE Also
To learn more about fish key bindings, see bind(1) and fish_key_reader(1).
"
end

View File

@ -0,0 +1,15 @@
# helper function for _fzf_search_variables
function _fzf_extract_var_info --argument-names variable_name set_show_output --description "Extract and reformat lines pertaining to \$variable_name from \$set_show_output."
# Extract only the lines about the variable, all of which begin with either
# $variable_name: ...or... $variable_name[
string match --regex "^\\\$$variable_name(?::|\[).*" <$set_show_output |
# Strip the variable name prefix, including ": " for scope info lines
string replace --regex "^\\\$$variable_name(?:: )?" '' |
# Distill the lines of values, replacing...
# [1]: |value|
# ...with...
# [1] value
string replace --regex ": \|(.*)\|" ' $1'
end

View File

@ -0,0 +1,49 @@
# helper for _fzf_search_git_status
# arg should be a line from git status --short, e.g.
# MM functions/_fzf_preview_changed_file.fish
# D README.md
# R LICENSE -> "New License"
function _fzf_preview_changed_file --argument-names path_status --description "Show the git diff of the given file."
# remove quotes because they'll be interpreted literally by git diff
# no need to requote when referencing $path because fish does not perform word splitting
# https://fishshell.com/docs/current/fish_for_bash_users.html
set -f path (string unescape (string sub --start 4 $path_status))
# first letter of short format shows index, second letter shows working tree
# https://git-scm.com/docs/git-status/2.35.0#_short_format
set -f index_status (string sub --length 1 $path_status)
set -f working_tree_status (string sub --start 2 --length 1 $path_status)
set -f diff_opts --color=always
if test $index_status = '?'
_fzf_report_diff_type Untracked
_fzf_preview_file $path
else if contains {$index_status}$working_tree_status DD AU UD UA DU AA UU
# Unmerged statuses taken directly from git status help's short format table
# Unmerged statuses are mutually exclusive with other statuses, so if we see
# these, then safe to assume the path is unmerged
_fzf_report_diff_type Unmerged
git diff $diff_opts -- $path
else
if test $index_status != ' '
_fzf_report_diff_type Staged
# renames are only detected in the index, never working tree, so only need to test for it here
# https://stackoverflow.com/questions/73954214
if test $index_status = R
# diff the post-rename path with the original path, otherwise the diff will show the entire file as being added
set -f orig_and_new_path (string split --max 1 -- ' -> ' $path)
git diff --staged $diff_opts -- $orig_and_new_path[1] $orig_and_new_path[2]
# path currently has the form of "original -> current", so we need to correct it before it's used below
set path $orig_and_new_path[2]
else
git diff --staged $diff_opts -- $path
end
end
if test $working_tree_status != ' '
_fzf_report_diff_type Unstaged
git diff $diff_opts -- $path
end
end
end

View File

@ -0,0 +1,43 @@
# helper function for _fzf_search_directory and _fzf_search_git_status
function _fzf_preview_file --description "Print a preview for the given file based on its file type."
# because there's no way to guarantee that _fzf_search_directory passes the path to _fzf_preview_file
# as one argument, we collect all the arguments into one single variable and treat that as the path
set -f file_path $argv
if test -L "$file_path" # symlink
# notify user and recurse on the target of the symlink, which can be any of these file types
set -l target_path (realpath "$file_path")
set_color yellow
echo "'$file_path' is a symlink to '$target_path'."
set_color normal
_fzf_preview_file "$target_path"
else if test -f "$file_path" # regular file
if set --query fzf_preview_file_cmd
# need to escape quotes to make sure eval receives file_path as a single arg
eval "$fzf_preview_file_cmd '$file_path'"
else
bat --style=numbers --color=always "$file_path"
end
else if test -d "$file_path" # directory
if set --query fzf_preview_dir_cmd
# see above
eval "$fzf_preview_dir_cmd '$file_path'"
else
# -A list hidden files as well, except for . and ..
# -F helps classify files by appending symbols after the file name
command ls -A -F "$file_path"
end
else if test -c "$file_path"
_fzf_report_file_type "$file_path" "character device file"
else if test -b "$file_path"
_fzf_report_file_type "$file_path" "block device file"
else if test -S "$file_path"
_fzf_report_file_type "$file_path" socket
else if test -p "$file_path"
_fzf_report_file_type "$file_path" "named pipe"
else
echo "$file_path doesn't exist." >&2
end
end

View File

@ -0,0 +1,18 @@
# helper for _fzf_preview_changed_file
# prints out something like
# ╭────────╮
# │ Staged │
# ╰────────╯
function _fzf_report_diff_type --argument-names diff_type --description "Print a distinct colored header meant to preface a git patch."
# number of "-" to draw is the length of the string to box + 2 for padding
set -f repeat_count (math 2 + (string length $diff_type))
set -f line (string repeat --count $repeat_count)
set -f top_border$line
set -f btm_border$line
set_color yellow
echo $top_border
echo "$diff_type"
echo $btm_border
set_color normal
end

View File

@ -0,0 +1,6 @@
# helper function for _fzf_preview_file
function _fzf_report_file_type --argument-names file_path file_type --description "Explain the file type for a file."
set_color red
echo "Cannot preview '$file_path': it is a $file_type."
set_color normal
end

View File

@ -0,0 +1,33 @@
function _fzf_search_directory --description "Search the current directory. Replace the current token with the selected file paths."
# Directly use fd binary to avoid output buffering delay caused by a fd alias, if any.
# Debian-based distros install fd as fdfind and the fd package is something else, so
# check for fdfind first. Fall back to "fd" for a clear error message.
set -f fd_cmd (command -v fdfind || command -v fd || echo "fd")
set -f --append fd_cmd --color=always $fzf_fd_opts
set -f fzf_arguments --multi --ansi $fzf_directory_opts
set -f token (commandline --current-token)
# expand any variables or leading tilde (~) in the token
set -f expanded_token (eval echo -- $token)
# unescape token because it's already quoted so backslashes will mess up the path
set -f unescaped_exp_token (string unescape -- $expanded_token)
# If the current token is a directory and has a trailing slash,
# then use it as fd's base directory.
if string match --quiet -- "*/" $unescaped_exp_token && test -d "$unescaped_exp_token"
set --append fd_cmd --base-directory=$unescaped_exp_token
# use the directory name as fzf's prompt to indicate the search is limited to that directory
set --prepend fzf_arguments --prompt="Directory $unescaped_exp_token> " --preview="_fzf_preview_file $expanded_token{}"
set -f file_paths_selected $unescaped_exp_token($fd_cmd 2>/dev/null | _fzf_wrapper $fzf_arguments)
else
set --prepend fzf_arguments --prompt="Directory> " --query="$unescaped_exp_token" --preview='_fzf_preview_file {}'
set -f file_paths_selected ($fd_cmd 2>/dev/null | _fzf_wrapper $fzf_arguments)
end
if test $status -eq 0
commandline --current-token --replace -- (string escape -- $file_paths_selected | string join ' ')
end
commandline --function repaint
end

View File

@ -0,0 +1,36 @@
function _fzf_search_git_log --description "Search the output of git log and preview commits. Replace the current token with the selected commit hash."
if not git rev-parse --git-dir >/dev/null 2>&1
echo '_fzf_search_git_log: Not in a git repository.' >&2
else
if not set --query fzf_git_log_format
# %h gives you the abbreviated commit hash, which is useful for saving screen space, but we will have to expand it later below
set -f fzf_git_log_format '%C(bold blue)%h%C(reset) - %C(cyan)%ad%C(reset) %C(yellow)%d%C(reset) %C(normal)%s%C(reset) %C(dim normal)[%an]%C(reset)'
end
set -f preview_cmd 'git show --color=always --stat --patch {1}'
if set --query fzf_diff_highlighter
set preview_cmd "$preview_cmd | $fzf_diff_highlighter"
end
set -f selected_log_lines (
git log --no-show-signature --color=always --format=format:$fzf_git_log_format --date=short | \
_fzf_wrapper --ansi \
--multi \
--scheme=history \
--prompt="Git Log> " \
--preview=$preview_cmd \
--query=(commandline --current-token) \
$fzf_git_log_opts
)
if test $status -eq 0
for line in $selected_log_lines
set -f abbreviated_commit_hash (string split --field 1 " " $line)
set -f full_commit_hash (git rev-parse $abbreviated_commit_hash)
set -f --append commit_hashes $full_commit_hash
end
commandline --current-token --replace (string join ' ' $commit_hashes)
end
end
commandline --function repaint
end

View File

@ -0,0 +1,41 @@
function _fzf_search_git_status --description "Search the output of git status. Replace the current token with the selected file paths."
if not git rev-parse --git-dir >/dev/null 2>&1
echo '_fzf_search_git_status: Not in a git repository.' >&2
else
set -f preview_cmd '_fzf_preview_changed_file {}'
if set --query fzf_diff_highlighter
set preview_cmd "$preview_cmd | $fzf_diff_highlighter"
end
set -f selected_paths (
# Pass configuration color.status=always to force status to use colors even though output is sent to a pipe
git -c color.status=always status --short |
_fzf_wrapper --ansi \
--multi \
--prompt="Git Status> " \
--query=(commandline --current-token) \
--preview=$preview_cmd \
--nth="2.." \
$fzf_git_status_opts
)
if test $status -eq 0
# git status --short automatically escapes the paths of most files for us so not going to bother trying to handle
# the few edges cases of weird file names that should be extremely rare (e.g. "this;needs;escaping")
set -f cleaned_paths
for path in $selected_paths
if test (string sub --length 1 $path) = R
# path has been renamed and looks like "R LICENSE -> LICENSE.md"
# extract the path to use from after the arrow
set --append cleaned_paths (string split -- "-> " $path)[-1]
else
set --append cleaned_paths (string sub --start=4 $path)
end
end
commandline --current-token --replace -- (string join ' ' $cleaned_paths)
end
end
commandline --function repaint
end

View File

@ -0,0 +1,39 @@
function _fzf_search_history --description "Search command history. Replace the command line with the selected command."
# history merge incorporates history changes from other fish sessions
# it errors out if called in private mode
if test -z "$fish_private_mode"
builtin history merge
end
if not set --query fzf_history_time_format
# Reference https://devhints.io/strftime to understand strftime format symbols
set -f fzf_history_time_format "%m-%d %H:%M:%S"
end
# Delinate time from command in history entries using the vertical box drawing char (U+2502).
# Then, to get raw command from history entries, delete everything up to it. The ? on regex is
# necessary to make regex non-greedy so it won't match into commands containing the char.
set -f time_prefix_regex '^.*? │ '
# Delinate commands throughout pipeline using null rather than newlines because commands can be multi-line
set -f commands_selected (
builtin history --null --show-time="$fzf_history_time_format" |
_fzf_wrapper --read0 \
--print0 \
--multi \
--scheme=history \
--prompt="History> " \
--query=(commandline) \
--preview="string replace --regex '$time_prefix_regex' '' -- {} | fish_indent --ansi" \
--preview-window="bottom:3:wrap" \
$fzf_history_opts |
string split0 |
# remove timestamps from commands selected
string replace --regex $time_prefix_regex ''
)
if test $status -eq 0
commandline --replace -- $commands_selected
end
commandline --function repaint
end

View File

@ -0,0 +1,32 @@
function _fzf_search_processes --description "Search all running processes. Replace the current token with the pid of the selected process."
# Directly use ps command because it is often aliased to a different command entirely
# or with options that dirty the search results and preview output
set -f ps_cmd (command -v ps || echo "ps")
# use all caps to be consistent with ps default format
# snake_case because ps doesn't seem to allow spaces in the field names
set -f ps_preview_fmt (string join ',' 'pid' 'ppid=PARENT' 'user' '%cpu' 'rss=RSS_IN_KB' 'start=START_TIME' 'command')
set -f processes_selected (
$ps_cmd -A -opid,command | \
_fzf_wrapper --multi \
--prompt="Processes> " \
--query (commandline --current-token) \
--ansi \
# first line outputted by ps is a header, so we need to mark it as so
--header-lines=1 \
# ps uses exit code 1 if the process was not found, in which case show an message explaining so
--preview="$ps_cmd -o '$ps_preview_fmt' -p {1} || echo 'Cannot preview {1} because it exited.'" \
--preview-window="bottom:4:wrap" \
$fzf_processes_opts
)
if test $status -eq 0
for process in $processes_selected
set -f --append pids_selected (string split --no-empty --field=1 -- " " $process)
end
# string join to replace the newlines outputted by string split with spaces
commandline --current-token --replace -- (string join ' ' $pids_selected)
end
commandline --function repaint
end

View File

@ -0,0 +1,47 @@
# This function expects the following two arguments:
# argument 1 = output of (set --show | psub), i.e. a file with the scope info and values of all variables
# argument 2 = output of (set --names | psub), i.e. a file with all variable names
function _fzf_search_variables --argument-names set_show_output set_names_output --description "Search and preview shell variables. Replace the current token with the selected variable."
if test -z "$set_names_output"
printf '%s\n' '_fzf_search_variables requires 2 arguments.' >&2
commandline --function repaint
return 22 # 22 means invalid argument in POSIX
end
# Exclude the history variable from being piped into fzf because
# 1. it's not included in $set_names_output
# 2. it tends to be a very large value => increases computation time
# 3._fzf_search_history is a much better way to examine history anyway
set -f all_variable_names (string match --invert history <$set_names_output)
set -f current_token (commandline --current-token)
# Use the current token to pre-populate fzf's query. If the current token begins
# with a $, remove it from the query so that it will better match the variable names
set -f cleaned_curr_token (string replace -- '$' '' $current_token)
set -f variable_names_selected (
printf '%s\n' $all_variable_names |
_fzf_wrapper --preview "_fzf_extract_var_info {} $set_show_output" \
--prompt="Variables> " \
--preview-window="wrap" \
--multi \
--query=$cleaned_curr_token \
$fzf_variables_opts
)
if test $status -eq 0
# If the current token begins with a $, do not overwrite the $ when
# replacing the current token with the selected variable.
# Uses brace expansion to prepend $ to each variable name.
commandline --current-token --replace (
if string match --quiet -- '$*' $current_token
string join " " \${$variable_names_selected}
else
string join " " $variable_names_selected
end
)
end
commandline --function repaint
end

View File

@ -0,0 +1,21 @@
function _fzf_wrapper --description "Prepares some environment variables before executing fzf."
# Make sure fzf uses fish to execute preview commands, some of which
# are autoloaded fish functions so don't exist in other shells.
# Use --function so that it doesn't clobber SHELL outside this function.
set -f --export SHELL (command --search fish)
# If neither FZF_DEFAULT_OPTS nor FZF_DEFAULT_OPTS_FILE are set, then set some sane defaults.
# See https://github.com/junegunn/fzf#environment-variables
set --query FZF_DEFAULT_OPTS FZF_DEFAULT_OPTS_FILE
if test $status -eq 2
# cycle allows jumping between the first and last results, making scrolling faster
# layout=reverse lists results top to bottom, mimicking the familiar layouts of git log, history, and env
# border shows where the fzf window begins and ends
# height=90% leaves space to see the current command and some scrollback, maintaining context of work
# preview-window=wrap wraps long lines in the preview window, making reading easier
# marker=* makes the multi-select marker more distinguishable from the pointer (since both default to >)
set --export FZF_DEFAULT_OPTS '--cycle --layout=reverse --border --height=90% --preview-window=wrap --marker="*"'
end
fzf $argv
end

View File

@ -0,0 +1,21 @@
function fish_greeting
if not set -q fish_greeting
set -l line1 (printf (_ 'Welcome %sEduardo%s, remember to drink water!') (set_color yellow) (set_color normal))
set -g fish_greeting "$line1"
end
if set -q fish_private_mode
set -l line (_ "fish is running in private mode, history will not be persisted.")
if set -q fish_greeting[1]
set -g fish_greeting $fish_greeting\n$line
else
set -g fish_greeting $line
end
end
# The greeting used to be skipped when fish_greeting was empty (not just undefined)
# Keep it that way to not print superfluous newlines on old configuration
test -n "$fish_greeting"
and echo $fish_greeting
end

View File

@ -0,0 +1,240 @@
function fisher --argument-names cmd --description "A plugin manager for Fish"
set --query fisher_path || set --local fisher_path $__fish_config_dir
set --local fisher_version 4.4.5
set --local fish_plugins $__fish_config_dir/fish_plugins
switch "$cmd"
case -v --version
echo "fisher, version $fisher_version"
case "" -h --help
echo "Usage: fisher install <plugins...> Install plugins"
echo " fisher remove <plugins...> Remove installed plugins"
echo " fisher update <plugins...> Update installed plugins"
echo " fisher update Update all installed plugins"
echo " fisher list [<regex>] List installed plugins matching regex"
echo "Options:"
echo " -v, --version Print version"
echo " -h, --help Print this help message"
echo "Variables:"
echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~
case ls list
string match --entire --regex -- "$argv[2]" $_fisher_plugins
case install update remove
isatty || read --local --null --array stdin && set --append argv $stdin
set --local install_plugins
set --local update_plugins
set --local remove_plugins
set --local arg_plugins $argv[2..-1]
set --local old_plugins $_fisher_plugins
set --local new_plugins
test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins | string replace -- \~ ~)
if ! set --query argv[2]
if test "$cmd" != update
echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1
else if ! set --query file_plugins
echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1
end
set arg_plugins $file_plugins
end
for plugin in $arg_plugins
set plugin (test -e "$plugin" && realpath $plugin || string lower -- $plugin)
contains -- "$plugin" $new_plugins || set --append new_plugins $plugin
end
if set --query argv[2]
for plugin in $new_plugins
if contains -- "$plugin" $old_plugins
test "$cmd" = remove &&
set --append remove_plugins $plugin ||
set --append update_plugins $plugin
else if test "$cmd" = install
set --append install_plugins $plugin
else
echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1
end
end
else
for plugin in $new_plugins
contains -- "$plugin" $old_plugins &&
set --append update_plugins $plugin ||
set --append install_plugins $plugin
end
for plugin in $old_plugins
contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin
end
end
set --local pid_list
set --local source_plugins
set --local fetch_plugins $update_plugins $install_plugins
set --local fish_path (status fish-path)
echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal)
for plugin in $fetch_plugins
set --local source (command mktemp -d)
set --append source_plugins $source
command mkdir -p $source/{completions,conf.d,themes,functions}
$fish_path --command "
if test -e $plugin
command cp -Rf $plugin/* $source
else
set temp (command mktemp -d)
set repo (string split -- \@ $plugin) || set repo[2] HEAD
if set path (string replace --regex -- '^(https://)?gitlab.com/' '' \$repo[1])
set name (string split -- / \$path)[-1]
set url https://gitlab.com/\$path/-/archive/\$repo[2]/\$name-\$repo[2].tar.gz
else
set url https://api.github.com/repos/\$repo[1]/tarball/\$repo[2]
end
echo Fetching (set_color --underline)\$url(set_color normal)
if command curl -q --silent -L \$url | command tar -xzC \$temp -f - 2>/dev/null
command cp -Rf \$temp/*/* $source
else
echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2
command rm -rf $source
end
command rm -rf \$temp
end
set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files
" &
set --append pid_list (jobs --last --pid)
end
wait $pid_list 2>/dev/null
for plugin in $fetch_plugins
if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source
if set --local index (contains --index -- "$plugin" $install_plugins)
set --erase install_plugins[$index]
else
set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)]
end
end
end
for plugin in $update_plugins $remove_plugins
if set --local index (contains --index -- "$plugin" $_fisher_plugins)
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
if contains -- "$plugin" $remove_plugins
for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var)
emit {$name}_uninstall
end
printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
set --erase _fisher_plugins[$index]
end
command rm -rf (string replace -- \~ ~ $$plugin_files_var)
functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var)
for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var)
complete --erase --command $name
end
set --erase $plugin_files_var
end
end
if set --query update_plugins[1] || set --query install_plugins[1]
command mkdir -p $fisher_path/{functions,themes,conf.d,completions}
end
for plugin in $update_plugins $install_plugins
set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)]
set --local files $source/{functions,themes,conf.d,completions}/*
if set --local index (contains --index -- $plugin $install_plugins)
set --local user_files $fisher_path/{functions,themes,conf.d,completions}/*
set --local conflict_files
for file in (string replace -- $source/ $fisher_path/ $files)
contains -- $file $user_files && set --append conflict_files $file
end
if set --query conflict_files[1] && set --erase install_plugins[$index]
echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2
continue
end
end
for file in (string replace -- $source/ "" $files)
command cp -RLf $source/$file $fisher_path/$file
end
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files | string replace -- ~ \~)
contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin
contains -- $plugin $install_plugins && set --local event install || set --local event update
printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var | string replace -- \~ ~)
source $file
if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file)
emit {$name}_$event
end
end
end
command rm -rf $source_plugins
if set --query _fisher_plugins[1]
set --local commit_plugins
for plugin in $file_plugins
contains -- (string lower -- $plugin) (string lower -- $_fisher_plugins) && set --append commit_plugins $plugin
end
for plugin in $_fisher_plugins
contains -- (string lower -- $plugin) (string lower -- $commit_plugins) || set --append commit_plugins $plugin
end
string replace --regex -- $HOME \~ $commit_plugins >$fish_plugins
else
set --erase _fisher_plugins
command rm -f $fish_plugins
end
set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins)
test "$total" != "0 0 0" && echo (string join ", " (
test $total[1] = 0 || echo "Installed $total[1]") (
test $total[2] = 0 || echo "Updated $total[2]") (
test $total[3] = 0 || echo "Removed $total[3]")
) plugin/s
case \*
echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1
end
end
if ! set --query _fisher_upgraded_to_4_4
set --universal _fisher_upgraded_to_4_4
if functions --query _fisher_list
set --query XDG_DATA_HOME[1] || set --local XDG_DATA_HOME ~/.local/share
command rm -rf $XDG_DATA_HOME/fisher
functions --erase _fisher_{list,plugin_parse}
fisher update >/dev/null 2>/dev/null
else
for var in (set --names | string match --entire --regex '^_fisher_.+_files$')
set $var (string replace -- ~ \~ $$var)
end
functions --erase _fisher_fish_postexec
end
end

View File

@ -0,0 +1,46 @@
# Always installs bindings for insert and default mode for simplicity and b/c it has almost no side-effect
# https://gitter.im/fish-shell/fish-shell?at=60a55915ee77a74d685fa6b1
function fzf_configure_bindings --description "Installs the default key bindings for fzf.fish with user overrides passed as options."
# no need to install bindings if not in interactive mode or running tests
status is-interactive || test "$CI" = true; or return
set -f options_spec h/help 'directory=?' 'git_log=?' 'git_status=?' 'history=?' 'processes=?' 'variables=?'
argparse --max-args=0 --ignore-unknown $options_spec -- $argv 2>/dev/null
if test $status -ne 0
echo "Invalid option or a positional argument was provided." >&2
_fzf_configure_bindings_help
return 22
else if set --query _flag_help
_fzf_configure_bindings_help
return
else
# Initialize with default key sequences and then override or disable them based on flags
# index 1 = directory, 2 = git_log, 3 = git_status, 4 = history, 5 = processes, 6 = variables
set -f key_sequences \e\cf \e\cl \e\cs \cr \e\cp \cv # \c = control, \e = escape
set --query _flag_directory && set key_sequences[1] "$_flag_directory"
set --query _flag_git_log && set key_sequences[2] "$_flag_git_log"
set --query _flag_git_status && set key_sequences[3] "$_flag_git_status"
set --query _flag_history && set key_sequences[4] "$_flag_history"
set --query _flag_processes && set key_sequences[5] "$_flag_processes"
set --query _flag_variables && set key_sequences[6] "$_flag_variables"
# If fzf bindings already exists, uninstall it first for a clean slate
if functions --query _fzf_uninstall_bindings
_fzf_uninstall_bindings
end
for mode in default insert
test -n $key_sequences[1] && bind --mode $mode $key_sequences[1] _fzf_search_directory
test -n $key_sequences[2] && bind --mode $mode $key_sequences[2] _fzf_search_git_log
test -n $key_sequences[3] && bind --mode $mode $key_sequences[3] _fzf_search_git_status
test -n $key_sequences[4] && bind --mode $mode $key_sequences[4] _fzf_search_history
test -n $key_sequences[5] && bind --mode $mode $key_sequences[5] _fzf_search_processes
test -n $key_sequences[6] && bind --mode $mode $key_sequences[6] "$_fzf_search_vars_command"
end
function _fzf_uninstall_bindings --inherit-variable key_sequences
bind --erase -- $key_sequences
bind --erase --mode insert -- $key_sequences
end
end
end

108
.config/ghostty/config Executable file
View File

@ -0,0 +1,108 @@
font-family = Terminess Nerd Font
font-size = 18
font-thicken = false
theme = Homebrew
#theme = Apple Classic
## background = #282c34
#background = #444445
#foreground = #ffffff
#minimum-contrast = 1
## Black
#palette = 0=#000000
#palette = 8=#666666
## Red
#palette = 1=#990000
#palette = 9=#e50000
## Green
#palette = 2=#00a600
#palette = 10=#00d900
## Yellow
#palette = 3=#999900
#palette = 11=#e5e500
## Blue
##palette = 4=#0000b2
#palette = 4=#053de6
#palette = 12=#0000ff
## Purple
#palette = 5=#b200b2
#palette = 13=#e500e5
## Aqua
#palette = 6=#00a6b2
#palette = 14=#00e5e5
## White
#palette = 7=#bfbfbf
#palette = 15=#e5e5e5
cursor-color =
cursor-invert-fg-bg = false
cursor-opacity = 1
cursor-style = block
cursor-style-blink =
cursor-click-to-move = true
mouse-hide-while-typing = false
mouse-shift-capture = false
background-opacity = 1
unfocused-split-opacity = 0.7
scrollback-limit = 10000000
link-url = true
fullscreen = false
window-padding-x = 2
window-padding-y = 2
window-padding-balance = false
window-padding-color = background
window-vsync = true
window-inherit-working-directory = true
window-inherit-font-size = true
window-decoration = true
window-title-font-family =
window-theme = auto
window-colorspace = srgb
window-height = 51
window-width = 189
window-save-state = default
window-step-resize = false
window-new-tab-position = current
resize-overlay = after-first
resize-overlay-position = center
resize-overlay-duration = 750ms
focus-follows-mouse = false
clipboard-read = ask
clipboard-write = allow
clipboard-trim-trailing-spaces = true
clipboard-paste-protection = true
clipboard-paste-bracketed-safe = true
image-storage-limit = 320000000
copy-on-select = false
click-repeat-interval = 0
initial-window = true
shell-integration = detect
shell-integration-features = cursor,no-sudo,title
macos-non-native-fullscreen = false
macos-titlebar-style = transparent
macos-titlebar-proxy-icon = visible
macos-option-as-alt =
macos-window-shadow = true
macos-auto-secure-input = true
macos-secure-input-indication = true
macos-icon = official
macos-icon-frame = aluminum
macos-icon-ghost-color =
macos-icon-screen-color =
linux-cgroup = single-instance
linux-cgroup-memory-limit =
linux-cgroup-processes-limit =
linux-cgroup-hard-fail = false
gtk-single-instance = desktop
#gtk-titlebar = true
gtk-titlebar = false
gtk-tabs-location = top
adw-toolbar-style = raised
#adw-toast = clipboard-copy
gtk-wide-tabs = true
gtk-adwaita = true
#gtk-custom-css =
desktop-notifications = true
bold-is-bright = false
term = xterm-ghostty
enquiry-response =
auto-update = check
auto-update-channel =

1
.config/nvim/.gitignore vendored Executable file
View File

@ -0,0 +1 @@
*.json

2
.config/nvim/.stylua.toml Executable file
View File

@ -0,0 +1,2 @@
indent_type = "Spaces"
indent_width = 4

View File

@ -0,0 +1,16 @@
CIFAR
MNIST
LeNet
MUL
BCNN
Grangegorman
Cueto
Mendoza
Maynooth
Frobenius
Neuromorphic
neuromorphic
NN
pytorch
Pytorch
SOTA

View File

@ -0,0 +1,5 @@
; extends
(object
(pair
key: (_) @property.lhs
value: (_) @property.inner @property.rhs) @property.outer)

2
.config/nvim/init.lua Executable file
View File

@ -0,0 +1,2 @@
require("user.core.init")
require("user.lazy")

View File

@ -0,0 +1,2 @@
require("user.core.options")
require("user.core.keymaps")

View File

@ -0,0 +1,128 @@
vim.g.mapleader = " "
vim.g.maplocalleader = " "
local keymap = vim.keymap -- for conciseness
keymap.set("i", "jk", "<ESC>", { desc = "Exit insert mode with jk" })
keymap.set("n", "<leader>nh", ":nohl<CR>", { desc = "Clear search highlights" })
-- increment/decrement numbers
keymap.set("n", "<leader>+", "<C-a>", { desc = "Increment number" }) -- increment
keymap.set("n", "<leader>-", "<C-x>", { desc = "Decrement number" }) -- decrement
-- window management
keymap.set("n", "<leader>sv", "<C-w>v", { desc = "Split window vertically" }) -- split window vertically
keymap.set("n", "<leader>sh", "<C-w>s", { desc = "Split window horizontally" }) -- split window horizontally
keymap.set("n", "<leader>se", "<C-w>=", { desc = "Make splits equal size" }) -- make split windows equal width & height
keymap.set("n", "<leader>sx", "<cmd>close<CR>", { desc = "Close current split" }) -- close current split window
keymap.set("n", "<leader>to", "<cmd>tabnew<CR>", { desc = "Open new tab" }) -- open new tab
keymap.set("n", "<leader>tx", "<cmd>tabclose<CR>", { desc = "Close current tab" }) -- close current tab
keymap.set("n", "<leader>tn", "<cmd>tabn<CR>", { desc = "Go to next tab" }) -- go to next tab
keymap.set("n", "<leader>tp", "<cmd>tabp<CR>", { desc = "Go to previous tab" }) -- go to previous tab
keymap.set("n", "<leader>tf", "<cmd>tabnew %<CR>", { desc = "Open current buffer in new tab" }) -- move current buffer to new tab
-- Open Ex as buffer
-- vim.keymap.set("n", "<leader>pv", vim.cmd.Ex, { desc = "Open Ex" })
vim.keymap.set("n", "<leader>pv", ":NvimTreeToggle<CR>", { desc = "Open Ex" })
-- Exit insert mode without hitting Esc
vim.keymap.set("i", "jj", "<Esc>", { desc = "Esc" })
-- Make Y behave like C or D
vim.keymap.set("n", "Y", "y$")
-- Keep window centered when going up/down
vim.keymap.set("n", "J", "mzJ`z")
vim.keymap.set("n", "<C-d>", "<C-d>zz")
vim.keymap.set("n", "<C-u>", "<C-u>zz")
vim.keymap.set("n", "n", "nzzzv")
vim.keymap.set("n", "N", "Nzzzv")
-- Paste without overwriting register
vim.keymap.set("v", "p", '"_dP')
-- Copy text to " register
vim.keymap.set("n", "<leader>y", '"+y', { desc = 'Yank into " register' })
vim.keymap.set("v", "<leader>y", '"+y', { desc = 'Yank into " register' })
vim.keymap.set("n", "<leader>Y", '"+Y', { desc = 'Yank into " register' })
-- Delete text to " register
vim.keymap.set("n", "<leader>d", '"_d', { desc = 'Delete into " register' })
vim.keymap.set("v", "<leader>d", '"_d', { desc = 'Delete into " register' })
-- Get out Q
vim.keymap.set("n", "Q", "<nop>")
-- close buffer
vim.keymap.set("n", "<leader>q", "<cmd>bd<CR>", { desc = "Close Buffer" })
-- Close buffer without closing split
vim.keymap.set("n", "<leader>w", "<cmd>bp|bd #<CR>", { desc = "Close Buffer; Retain Split" })
-- Navigate between quickfix items
vim.keymap.set("n", "<leader>h", "<cmd>cnext<CR>zz", { desc = "Forward qfixlist" })
vim.keymap.set("n", "<leader>;", "<cmd>cprev<CR>zz", { desc = "Backward qfixlist" })
-- Navigate between location list items
vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz", { desc = "Forward location list" })
vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz", { desc = "Backward location list" })
-- Replace word under cursor across entire buffer
vim.keymap.set(
"n",
"<leader>s",
[[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]],
{ desc = "Replace word under cursor" }
)
-- Make current file executable
vim.keymap.set("n", "<leader>x", "<cmd>!chmod +x %<CR>", { silent = true, desc = "Make current file executable" })
-- Jump to plugin management file
vim.keymap.set("n", "<leader>vpp", "<cmd>e ~/.config/nvim/lua/exosyphon/lazy.lua<CR>", { desc = "Jump to lazy.lua" })
-- Git revert at current cursor location
vim.keymap.set("n", "<leader>U", "<cmd>GitGutterUndoHunk<CR>", { desc = "Revert Git Hunk" })
-- Copy file paths
vim.keymap.set("n", "<leader>cf", '<cmd>let @+ = expand("%")<CR>', { desc = "Copy File Name" })
vim.keymap.set("n", "<leader>cp", '<cmd>let @+ = expand("%:p")<CR>', { desc = "Copy File Path" })
vim.keymap.set("n", "<leader>so", function()
vim.cmd("so")
end, { desc = "Source current file" })
-- Resize with arrows
vim.keymap.set("n", "<C-S-Down>", ":resize +2<CR>", { desc = "Resize Horizontal Split Down" })
vim.keymap.set("n", "<C-S-Up>", ":resize -2<CR>", { desc = "Resize Horizontal Split Up" })
vim.keymap.set("n", "<C-Left>", ":vertical resize -2<CR>", { desc = "Resize Vertical Split Down" })
vim.keymap.set("n", "<C-Right>", ":vertical resize +2<CR>", { desc = "Resize Vertical Split Up" })
-- Open compiler
vim.api.nvim_set_keymap("n", "<leader><leader>", "<cmd>CompilerOpen<cr>", { noremap = true, silent = true })
-- Redo last selected option
vim.api.nvim_set_keymap(
"n",
"<leader><leader><leader>",
"<cmd>CompilerStop<cr>" -- (Optional, to dispose all tasks before redo)
.. "<cmd>CompilerRedo<cr>",
{ noremap = true, silent = true }
)
-- Toggle compiler results
vim.api.nvim_set_keymap("n", "<leader><leader>t", "<cmd>CompilerToggleResults<cr>", { noremap = true, silent = true })
-- Visual --
-- Stay in indent mode
vim.keymap.set("v", "<", "<gv")
vim.keymap.set("v", ">", ">gv")
-- Move block
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv", { desc = "Move Block Down" })
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv", { desc = "Move Block Up" })
-- Search for highlighted text in buffer
vim.keymap.set("v", "//", 'y/<C-R>"<CR>', { desc = "Search for highlighted text" })

View File

@ -0,0 +1,86 @@
-- NeoVim OPTIONS
vim.opt.guicursor = ""
-- vim.opt.spelllang = 'en_gb'
-- vim.opt.spell = true
vim.opt.nu = true
vim.opt.relativenumber = true
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.smartindent = true
vim.opt.wrap = true
-- Fonts
vim.opt.encoding = "utf-8"
-- Undo
vim.opt.swapfile = false
vim.opt.backup = false
vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
vim.opt.undofile = true
vim.opt.hlsearch = false
vim.opt.incsearch = true
-- optionally enable 24-bit colour
-- vim.opt.termguicolors = true
-- Folds
vim.opt.foldmethod = "marker"
--vim.opt.foldmethod = "expr"
--vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
--vim.opt.foldcolumn = "0"
--vim.opt.foldtext = ""
--vim.opt.foldlevel = 99
--vim.opt.foldlevelstart = 1
--vim.opt.foldnestmax = 4
-- Providers (Not necesary)
vim.g.loaded_ruby_provider = 0
vim.g.loaded_perl_provider = 0
vim.g.loaded_node_provider = 0
vim.opt.scrolloff = 8
vim.opt.signcolumn = "yes"
vim.opt.isfname:append("@-@")
vim.opt.updatetime = 50
vim.opt.colorcolumn = "110"
-- LSP options
vim.diagnostic.config({
virtual_text = false,
})
-- Show line diagnostics automatically in hover window
vim.o.updatetime = 250
vim.cmd([[autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false})]])
local f = io.popen("uname -s")
if f ~= nil then
MY_OS = f:read("*a")
MY_OS = string.gsub(MY_OS, "%s+", "")
f:close()
end
if MY_OS == "Linux" then
-- on Linux
-- Python provider
vim.g.python3_host_prog = "/usr/share/pyenv/shims/python"
elseif (MY_OS == "FreeBSD") or (MY_OS == "OpenBSD") then
-- on BSD
-- Python provider
vim.g.python3_host_prog = "/usr/local/share/pyenv/shims/python"
elseif MY_OS == "Darwin" then
-- on MacOS
-- Python provider
vim.g.python3_host_prog = "$HOME/.pyenv/shims/python"
else
print("Should never be here LSP")
end

22
.config/nvim/lua/user/lazy.lua Executable file
View File

@ -0,0 +1,22 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({ { import = "user.plugins" }, { import = "user.plugins.lsp" } }, {
checker = {
enabled = true,
notify = false,
},
change_detection = {
notify = false,
},
})

View File

@ -0,0 +1,46 @@
return {
"folke/tokyonight.nvim",
priority = 1000,
config = function()
-- local transparent = false -- set to true if you would like to enable transparency
local transparent = true -- set to true if you would like to enable transparency
local bg = "#011628"
local bg_dark = "#011423"
local bg_highlight = "#143652"
local bg_search = "#0A64AC"
local bg_visual = "#275378"
local fg = "#CBE0F0"
local fg_dark = "#B4D0E9"
local fg_gutter = "#627E97"
local border = "#547998"
require("tokyonight").setup({
style = "night",
transparent = transparent,
styles = {
sidebars = transparent and "transparent" or "dark",
floats = transparent and "transparent" or "dark",
},
on_colors = function(colors)
colors.bg = bg
colors.bg_dark = transparent and colors.none or bg_dark
colors.bg_float = transparent and colors.none or bg_dark
colors.bg_highlight = bg_highlight
colors.bg_popup = bg_dark
colors.bg_search = bg_search
colors.bg_sidebar = transparent and colors.none or bg_dark
colors.bg_statusline = transparent and colors.none or bg_dark
colors.bg_visual = bg_visual
colors.border = border
colors.fg = fg
colors.fg_dark = fg_dark
colors.fg_float = fg
colors.fg_gutter = fg_gutter
colors.fg_sidebar = fg_dark
end,
})
vim.cmd("colorscheme tokyonight")
end,
}

View File

@ -0,0 +1,47 @@
return {
"nvim-treesitter/nvim-treesitter",
event = { "BufReadPre", "BufNewFile" },
build = ":TSUpdate",
dependencies = {
"windwp/nvim-ts-autotag",
},
config = function()
-- import nvim-treesitter plugin
local treesitter = require("nvim-treesitter.configs")
-- configure treesitter
treesitter.setup({ -- enable syntax highlighting
highlight = {
enable = true,
},
-- enable indentation
indent = { enable = true },
-- enable autotagging (w/ nvim-ts-autotag plugin)
autotag = {
enable = true,
},
-- ensure these language parsers are installed
ensure_installed = {
"yaml",
"markdown",
"markdown_inline",
"bash",
"lua",
"vim",
"gitignore",
"query",
"vimdoc",
"c",
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<C-space>",
node_incremental = "<C-space>",
scope_incremental = false,
node_decremental = "<bs>",
},
},
})
end,
}

View File

@ -0,0 +1,116 @@
return {
"nvim-treesitter/nvim-treesitter-textobjects",
lazy = true,
config = function()
require("nvim-treesitter.configs").setup({
textobjects = {
select = {
enable = true,
-- Automatically jump forward to textobj, similar to targets.vim
lookahead = true,
keymaps = {
-- You can use the capture groups defined in textobjects.scm
["a="] = { query = "@assignment.outer", desc = "Select outer part of an assignment" },
["i="] = { query = "@assignment.inner", desc = "Select inner part of an assignment" },
["l="] = { query = "@assignment.lhs", desc = "Select left hand side of an assignment" },
["r="] = { query = "@assignment.rhs", desc = "Select right hand side of an assignment" },
-- works for javascript/typescript files (custom capture I created in after/queries/ecma/textobjects.scm)
["a:"] = { query = "@property.outer", desc = "Select outer part of an object property" },
["i:"] = { query = "@property.inner", desc = "Select inner part of an object property" },
["l:"] = { query = "@property.lhs", desc = "Select left part of an object property" },
["r:"] = { query = "@property.rhs", desc = "Select right part of an object property" },
["aa"] = { query = "@parameter.outer", desc = "Select outer part of a parameter/argument" },
["ia"] = { query = "@parameter.inner", desc = "Select inner part of a parameter/argument" },
["ai"] = { query = "@conditional.outer", desc = "Select outer part of a conditional" },
["ii"] = { query = "@conditional.inner", desc = "Select inner part of a conditional" },
["al"] = { query = "@loop.outer", desc = "Select outer part of a loop" },
["il"] = { query = "@loop.inner", desc = "Select inner part of a loop" },
["af"] = { query = "@call.outer", desc = "Select outer part of a function call" },
["if"] = { query = "@call.inner", desc = "Select inner part of a function call" },
["am"] = {
query = "@function.outer",
desc = "Select outer part of a method/function definition",
},
["im"] = {
query = "@function.inner",
desc = "Select inner part of a method/function definition",
},
["ac"] = { query = "@class.outer", desc = "Select outer part of a class" },
["ic"] = { query = "@class.inner", desc = "Select inner part of a class" },
},
},
swap = {
enable = true,
swap_next = {
["<leader>na"] = "@parameter.inner", -- swap parameters/argument with next
["<leader>n:"] = "@property.outer", -- swap object property with next
["<leader>nm"] = "@function.outer", -- swap function with next
},
swap_previous = {
["<leader>pa"] = "@parameter.inner", -- swap parameters/argument with prev
["<leader>p:"] = "@property.outer", -- swap object property with prev
["<leader>pm"] = "@function.outer", -- swap function with previous
},
},
move = {
enable = true,
set_jumps = true, -- whether to set jumps in the jumplist
goto_next_start = {
["]f"] = { query = "@call.outer", desc = "Next function call start" },
["]m"] = { query = "@function.outer", desc = "Next method/function def start" },
["]c"] = { query = "@class.outer", desc = "Next class start" },
["]i"] = { query = "@conditional.outer", desc = "Next conditional start" },
["]l"] = { query = "@loop.outer", desc = "Next loop start" },
-- You can pass a query group to use query from `queries/<lang>/<query_group>.scm file in your runtime path.
-- Below example nvim-treesitter's `locals.scm` and `folds.scm`. They also provide highlights.scm and indent.scm.
["]s"] = { query = "@scope", query_group = "locals", desc = "Next scope" },
["]z"] = { query = "@fold", query_group = "folds", desc = "Next fold" },
},
goto_next_end = {
["]F"] = { query = "@call.outer", desc = "Next function call end" },
["]M"] = { query = "@function.outer", desc = "Next method/function def end" },
["]C"] = { query = "@class.outer", desc = "Next class end" },
["]I"] = { query = "@conditional.outer", desc = "Next conditional end" },
["]L"] = { query = "@loop.outer", desc = "Next loop end" },
},
goto_previous_start = {
["[f"] = { query = "@call.outer", desc = "Prev function call start" },
["[m"] = { query = "@function.outer", desc = "Prev method/function def start" },
["[c"] = { query = "@class.outer", desc = "Prev class start" },
["[i"] = { query = "@conditional.outer", desc = "Prev conditional start" },
["[l"] = { query = "@loop.outer", desc = "Prev loop start" },
},
goto_previous_end = {
["[F"] = { query = "@call.outer", desc = "Prev function call end" },
["[M"] = { query = "@function.outer", desc = "Prev method/function def end" },
["[C"] = { query = "@class.outer", desc = "Prev class end" },
["[I"] = { query = "@conditional.outer", desc = "Prev conditional end" },
["[L"] = { query = "@loop.outer", desc = "Prev loop end" },
},
},
},
})
local ts_repeat_move = require("nvim-treesitter.textobjects.repeatable_move")
-- vim way: ; goes to the direction you were moving.
vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move)
vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_opposite)
-- Optionally, make builtin f, F, t, T also repeatable with ; and ,
vim.keymap.set({ "n", "x", "o" }, "f", ts_repeat_move.builtin_f)
vim.keymap.set({ "n", "x", "o" }, "F", ts_repeat_move.builtin_F)
vim.keymap.set({ "n", "x", "o" }, "t", ts_repeat_move.builtin_t)
vim.keymap.set({ "n", "x", "o" }, "T", ts_repeat_move.builtin_T)
end,
}

View File

@ -0,0 +1,125 @@
return {
"hrsh7th/nvim-cmp",
event = "InsertEnter",
dependencies = {
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-cmdline",
"hrsh7th/cmp-buffer", -- source for text in buffer
"hrsh7th/cmp-path", -- source for file system paths
{
"L3MON4D3/LuaSnip",
-- follow latest release.
version = "v2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release)
-- install jsregexp (optional!).
build = "make install_jsregexp",
},
"saadparwaiz1/cmp_luasnip", -- for autocompletion
"rafamadriz/friendly-snippets", -- useful snippets
"onsails/lspkind.nvim", -- vs-code like pictograms
},
config = function()
local cmp = require("cmp")
local luasnip = require("luasnip")
local lspkind = require("lspkind")
-- loads vscode style snippets from installed plugins (e.g. friendly-snippets)
require("luasnip.loaders.from_vscode").lazy_load()
cmp.setup({
completion = {
completeopt = "menu,menuone,preview,noselect",
},
snippet = { -- configure how nvim-cmp interacts with snippet engine
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
["<C-k>"] = cmp.mapping.select_prev_item(), -- previous suggestion
["<C-j>"] = cmp.mapping.select_next_item(), -- next suggestion
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
-- Allows selection with tab and shift-tab
["<S-Tab>"] = cmp.mapping.select_prev_item(select_opts),
["<Tab>"] = cmp.mapping.select_next_item(select_opts),
["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions
["<C-e>"] = cmp.mapping.abort(), -- close completion window
["<CR>"] = cmp.mapping.confirm({ select = false }),
}),
-- sources for autocompletion
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "luasnip" }, -- snippets
{ name = "buffer" }, -- text within current buffer
{ name = "path" }, -- file system paths
}),
-- configure lspkind for vs-code like pictograms in completion menu
formatting = {
format = lspkind.cmp_format({
maxwidth = 50,
ellipsis_char = "...",
}),
},
})
-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline({ "/", "?" }, {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = "buffer" },
},
})
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = "path" },
}, {
{ name = "cmdline" },
}),
matching = { disallow_symbol_nonprefix_matching = false },
})
-- Set up lspconfig.
local capabilities = require("cmp_nvim_lsp").default_capabilities()
-- Replace <YOUR_LSP_SERVER> with each lsp server you've enabled.
-- BASH
require("lspconfig")["bashls"].setup({
capabilities = capabilities,
})
-- CLANG
require("lspconfig")["clangd"].setup({
capabilities = capabilities,
})
-- CMAKE
require("lspconfig")["cmake"].setup({
capabilities = capabilities,
})
-- LUA
require("lspconfig")["lua_ls"].setup({
capabilities = capabilities,
})
-- LaTeX
require("lspconfig")["ltex"].setup({
capabilities = capabilities,
})
-- PYTHON
require("lspconfig")["pylsp"].setup({
capabilities = capabilities,
})
-- ZIG
require("lspconfig")["zls"].setup({
capabilities = capabilities,
})
end,
}

View File

@ -0,0 +1,24 @@
return {
"mfussenegger/nvim-lint",
event = { "BufReadPre", "BufNewFile" },
config = function()
local lint = require("lint")
lint.linters_by_ft = {
python = { "pylint" },
}
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
group = lint_augroup,
callback = function()
lint.try_lint()
end,
})
vim.keymap.set("n", "<leader>l", function()
lint.try_lint()
end, { desc = "Trigger linting for current file" })
end,
}

View File

@ -0,0 +1,27 @@
return {
{ -- This plugin
"Zeioth/compiler.nvim",
cmd = { "CompilerOpen", "CompilerToggleResults", "CompilerRedo" },
dependencies = { "stevearc/overseer.nvim", "nvim-telescope/telescope.nvim" },
opts = {},
},
{ -- The task runner we use
"stevearc/overseer.nvim",
commit = "6271cab7ccc4ca840faa93f54440ffae3a3918bd",
cmd = { "CompilerOpen", "CompilerToggleResults", "CompilerRedo" },
opts = {
task_list = {
direction = "bottom",
min_height = 25,
max_height = 25,
default_detail = 1,
},
},
},
-- C/C++ debbuging
{
"sakhnik/nvim-gdb",
},
-- Rust debug
{ "mfussenegger/nvim-dap" },
}

View File

@ -0,0 +1,20 @@
return {
"mrcjkb/rustaceanvim",
version = "^5", -- Recommended
lazy = false, -- This plugin is already lazy
config = function()
local bufnr = vim.api.nvim_get_current_buf()
vim.keymap.set("n", "<leader>a", function()
vim.cmd.RustLsp("codeAction") -- supports rust-analyzer's grouping
-- or vim.lsp.buf.codeAction() if you don't want grouping.
end, { silent = true, buffer = bufnr })
vim.keymap.set(
"n",
"K", -- Override Neovim's built-in hover keymap with rustaceanvim's hover actions
function()
vim.cmd.RustLsp({ "hover", "actions" })
end,
{ silent = true, buffer = bufnr }
)
end,
}

View File

@ -0,0 +1,88 @@
return {
"lervag/vimtex",
lazy = false, -- we don't want to lazy load VimTeX
-- tag = "v2.15", -- uncomment to pin to a specific release
init = function()
local f = io.popen("uname -s")
if f ~= nil then
MY_OS = f:read("*a")
MY_OS = string.gsub(MY_OS, "%s+", "")
f:close()
end
if MY_OS == "Linux" then
-- on Linux
-- Vimtex options:
vim.g.vimtex_view_method = "zathura"
vim.g.vimtex_general_viewer = "zathura"
vim.g.vimtex_quickfix_mode = 0
-- Ignore mappings
vim.g.vimtex_mappings_enabled = 1
---- Auto Indent
vim.g["vimtex_indent_enabled"] = 1
---- Syntax highlighting
vim.g.vimtex_syntax_enabled = 0
-- Error suppression:
vim.g.vimtex_log_ignore = {
"Underfull",
"Overfull",
"specifier changed to",
"Token not allowed in a PDF string",
}
elseif (MY_OS == "FreeBSD") or (MY_OS == "OpenBSD") then
-- on BSD
-- Vimtex options:
vim.g.vimtex_view_method = "zathura"
vim.g.vimtex_general_viewer = "zathura"
vim.g.vimtex_quickfix_mode = 0
-- OBSD options
--vim.g.vimtex_compiler_latexmk={ 'cmd': '' }
-- Ignore mappings
vim.g.vimtex_mappings_enabled = 1
---- Auto Indent
vim.g["vimtex_indent_enabled"] = 1
---- Syntax highlighting
vim.g.vimtex_syntax_enabled = 0
-- Error suppression:
vim.g.vimtex_log_ignore = {
"Underfull",
"Overfull",
"specifier changed to",
"Token not allowed in a PDF string",
}
elseif MY_OS == "Darwin" then
-- on MacOS
-- Vimtex options:
vim.g.vimtex_view_method = "sioyek"
vim.g.vimtex_view_sioyek_exe = "/Applications/sioyek.app/Contents/MacOS/sioyek"
vim.g.vimtex_quickfix_mode = 0
-- Ignore mappings
vim.g.vimtex_mappings_enabled = 1
---- Auto Indent
vim.g.vimtex_indent_enabled = 1
---- Syntax highlighting
vim.g.vimtex_syntax_enabled = 0
-- Error suppression:
vim.g.vimtex_log_ignore = {
"Underfull",
"Overfull",
"specifier changed to",
"Token not allowed in a PDF string",
}
else
print("Should never be here")
end
end,
}

View File

@ -0,0 +1,6 @@
return {
"tpope/vim-fugitive",
config = function()
vim.keymap.set("n", "<leader>gs", vim.cmd.Git, { desc = "Open Fugitive Panel" })
end,
}

View File

@ -0,0 +1,17 @@
return {
{ "airblade/vim-gitgutter" },
{ "mg979/vim-visual-multi" },
{
"kevinhwang91/nvim-ufo",
dependencies = "kevinhwang91/promise-async",
},
{
"folke/which-key.nvim",
event = "VeryLazy",
init = function()
vim.o.timeout = true
vim.o.timeoutlen = 500
end,
opts = {},
},
}

View File

@ -0,0 +1,21 @@
return {
"folke/todo-comments.nvim",
event = { "BufReadPre", "BufNewFile" },
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
local todo_comments = require("todo-comments")
-- set keymaps
local keymap = vim.keymap -- for conciseness
keymap.set("n", "]t", function()
todo_comments.jump_next()
end, { desc = "Next todo comment" })
keymap.set("n", "[t", function()
todo_comments.jump_prev()
end, { desc = "Previous todo comment" })
todo_comments.setup()
end,
}

View File

@ -0,0 +1,57 @@
return {
"nvim-telescope/telescope.nvim",
branch = "0.1.x",
dependencies = {
"nvim-lua/plenary.nvim",
"folke/trouble.nvim",
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
"nvim-tree/nvim-web-devicons",
"folke/todo-comments.nvim",
},
config = function()
local telescope = require("telescope")
local actions = require("telescope.actions")
local transform_mod = require("telescope.actions.mt").transform_mod
local trouble = require("trouble")
local trouble_telescope = require("trouble.sources.telescope")
-- or create your custom action
local custom_actions = transform_mod({
open_trouble_qflist = function(prompt_bufnr)
trouble.toggle("quickfix")
end,
})
telescope.setup({
defaults = {
path_display = { "smart" },
mappings = {
i = {
["<C-k>"] = actions.move_selection_previous, -- move to prev result
["<C-j>"] = actions.move_selection_next, -- move to next result
["<C-q>"] = actions.send_selected_to_qflist + custom_actions.open_trouble_qflist,
["<C-t>"] = trouble_telescope.open,
},
},
},
})
telescope.load_extension("fzf")
-- set keymaps
local keymap = vim.keymap -- for conciseness
keymap.set("n", "<leader>ff", "<cmd>Telescope find_files<cr>", { desc = "Fuzzy find files in cwd" })
keymap.set("n", "<leader>fr", "<cmd>Telescope oldfiles<cr>", { desc = "Fuzzy find recent files" })
keymap.set("n", "<leader>fg", "<cmd>Telescope live_grep<cr>", { desc = "Find string in cwd" })
keymap.set("n", "<leader>fc", "<cmd>Telescope grep_string<cr>", { desc = "Find string under cursor in cwd" })
keymap.set("n", "<leader>ft", "<cmd>TodoTelescope<cr>", { desc = "Find todos" })
keymap.set("n", "<leader>fb", "<cmd>Telescope buffers", { desc = "Find Buffers" })
keymap.set("n", "<leader>fh", "<cmd>Telescope help_tags", { desc = "Find Help Tags" })
keymap.set("n", "<leader>fs", "<cmd>Telescope lsp_document_symbols", { desc = "Find Symbols" })
keymap.set("n", "<leader>fi", "<cmd>AdvancedGitSearch<CR>", { desc = "AdvancedGitSearch" })
keymap.set("n", "<leader>fo", "<cmd>Telescope oldfiles", { desc = "Find Old Files" })
keymap.set("n", "<leader>fw", "<cmd>Telescope grep_string", { desc = "Find Word under Cursor" })
end,
}

View File

@ -0,0 +1,22 @@
return {
"nvim-neorg/neorg",
lazy = false, -- Disable lazy loading as some `lazy.nvim` distributions set `lazy = true` by default
version = "*", -- Pin Neorg to the latest stable release
config = function()
require("neorg").setup({
load = {
["core.defaults"] = {},
["core.concealer"] = {},
["core.dirman"] = {
config = {
workspaces = {
phd = "~/Work/Organization/2025-1st-Quatrimester/",
regular = "~/Documents/Notes",
},
default_workspace = "phd",
},
},
},
})
end,
}

View File

@ -0,0 +1,13 @@
return {
"voldikss/vim-floaterm",
config = function()
vim.keymap.set(
"n",
"<leader>TS",
"<cmd>:FloatermNew --height=0.3 --width=0.8 --wintype=float --name=floaterm1 --position=center --autoclose=2<CR>",
{ desc = "Open FloatTerm" }
)
vim.keymap.set("n", "<leader>TT", "<cmd>:FloatermToggle<CR>", { desc = "Toggle FloatTerm" })
vim.keymap.set("t", "<leader>TT", "<cmd>:FloatermToggle<CR>", { desc = "Toggle FloatTerm" })
end,
}

View File

@ -0,0 +1,6 @@
return {
"szw/vim-maximizer",
keys = {
{ "<leader>sm", "<cmd>MaximizerToggle<CR>", desc = "Maximize/minimize a split" },
},
}

View File

@ -0,0 +1,30 @@
return {
"windwp/nvim-autopairs",
event = { "InsertEnter" },
dependencies = {
"hrsh7th/nvim-cmp",
},
config = function()
-- import nvim-autopairs
local autopairs = require("nvim-autopairs")
-- configure autopairs
autopairs.setup({
check_ts = true, -- enable treesitter
ts_config = {
lua = { "string" }, -- don't add pairs in lua string treesitter nodes
javascript = { "template_string" }, -- don't add pairs in javscript template_string treesitter nodes
java = false, -- don't check treesitter on java
},
})
-- import nvim-autopairs completion functionality
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
-- import nvim-cmp plugin (completions plugin)
local cmp = require("cmp")
-- make autopairs and completion work together
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
end,
}

View File

@ -0,0 +1,6 @@
return {
"kylechui/nvim-surround",
event = { "BufReadPre", "BufNewFile" },
version = "*", -- Use for stability; omit to use `main` branch for the latest features
config = true,
}

View File

@ -0,0 +1,13 @@
return {
"folke/which-key.nvim",
event = "VeryLazy",
init = function()
vim.o.timeout = true
vim.o.timeoutlen = 500
end,
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
},
}

View File

@ -0,0 +1,63 @@
return {
"nvim-tree/nvim-tree.lua",
dependencies = "nvim-tree/nvim-web-devicons",
config = function()
local nvimtree = require("nvim-tree")
-- recommended settings from nvim-tree documentation
vim.g.netrw_liststyle = 3
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
nvimtree.setup({
view = {
width = 35,
relativenumber = true,
},
-- change folder arrow icons
renderer = {
indent_markers = {
enable = true,
},
icons = {
glyphs = {
folder = {
arrow_closed = "", -- arrow when folder is closed
arrow_open = "", -- arrow when folder is open
},
},
},
},
-- disable window_picker for
-- explorer to work well with
-- window splits
actions = {
open_file = {
window_picker = {
enable = true,
},
},
},
filters = {
custom = { ".DS_Store" },
dotfiles = true,
},
git = {
ignore = false,
},
})
-- set keymaps
local keymap = vim.keymap -- for conciseness
keymap.set("n", "<leader>ee", "<cmd>NvimTreeToggle<CR>", { desc = "Toggle file explorer" }) -- toggle file explorer
keymap.set(
"n",
"<leader>ef",
"<cmd>NvimTreeFindFileToggle<CR>",
{ desc = "Toggle file explorer on current file" }
) -- toggle file explorer on current file
keymap.set("n", "<leader>ec", "<cmd>NvimTreeCollapse<CR>", { desc = "Collapse file explorer" }) -- collapse file explorer
keymap.set("n", "<leader>er", "<cmd>NvimTreeRefresh<CR>", { desc = "Refresh file explorer" }) -- refresh file explorer
end,
}

View File

@ -0,0 +1,15 @@
return {
"folke/trouble.nvim",
dependencies = { "nvim-tree/nvim-web-devicons", "folke/todo-comments.nvim" },
opts = {
focus = true,
},
cmd = "Trouble",
keys = {
{ "<leader>xw", "<cmd>Trouble diagnostics toggle<CR>", desc = "Open trouble workspace diagnostics" },
{ "<leader>xd", "<cmd>Trouble diagnostics toggle filter.buf=0<CR>", desc = "Open trouble document diagnostics" },
{ "<leader>xq", "<cmd>Trouble quickfix toggle<CR>", desc = "Open trouble quickfix list" },
{ "<leader>xl", "<cmd>Trouble loclist toggle<CR>", desc = "Open trouble location list" },
{ "<leader>xt", "<cmd>Trouble todo toggle<CR>", desc = "Open todos in trouble" },
},
}

View File

@ -0,0 +1,17 @@
return {
"gbprod/substitute.nvim",
event = { "BufReadPre", "BufNewFile" },
config = function()
local substitute = require("substitute")
substitute.setup()
-- set keymaps
local keymap = vim.keymap -- for conciseness
keymap.set("n", "s", substitute.operator, { desc = "Substitute with motion" })
keymap.set("n", "ss", substitute.line, { desc = "Substitute line" })
keymap.set("n", "S", substitute.eol, { desc = "Substitute to end of line" })
keymap.set("x", "s", substitute.visual, { desc = "Substitute in visual mode" })
end,
}

View File

@ -0,0 +1,71 @@
return {
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
local lualine = require("lualine")
local lazy_status = require("lazy.status") -- to configure lazy pending updates count
local colors = {
blue = "#65D1FF",
green = "#3EFFDC",
violet = "#FF61EF",
yellow = "#FFDA7B",
red = "#FF4A4A",
fg = "#c3ccdc",
bg = "#112638",
inactive_bg = "#2c3043",
}
local my_lualine_theme = {
normal = {
a = { bg = colors.blue, fg = colors.bg, gui = "bold" },
b = { bg = colors.bg, fg = colors.fg },
c = { bg = colors.bg, fg = colors.fg },
},
insert = {
a = { bg = colors.green, fg = colors.bg, gui = "bold" },
b = { bg = colors.bg, fg = colors.fg },
c = { bg = colors.bg, fg = colors.fg },
},
visual = {
a = { bg = colors.violet, fg = colors.bg, gui = "bold" },
b = { bg = colors.bg, fg = colors.fg },
c = { bg = colors.bg, fg = colors.fg },
},
command = {
a = { bg = colors.yellow, fg = colors.bg, gui = "bold" },
b = { bg = colors.bg, fg = colors.fg },
c = { bg = colors.bg, fg = colors.fg },
},
replace = {
a = { bg = colors.red, fg = colors.bg, gui = "bold" },
b = { bg = colors.bg, fg = colors.fg },
c = { bg = colors.bg, fg = colors.fg },
},
inactive = {
a = { bg = colors.inactive_bg, fg = colors.semilightgray, gui = "bold" },
b = { bg = colors.inactive_bg, fg = colors.semilightgray },
c = { bg = colors.inactive_bg, fg = colors.semilightgray },
},
}
-- configure lualine with modified theme
lualine.setup({
options = {
theme = my_lualine_theme,
},
sections = {
lualine_x = {
{
lazy_status.updates,
cond = lazy_status.has_updates,
color = { fg = "#ff9e64" },
},
{ "encoding" },
{ "fileformat" },
{ "filetype" },
},
},
})
end,
}

View File

@ -0,0 +1,39 @@
return {
"stevearc/conform.nvim",
event = { "BufReadPre", "BufNewFile" },
config = function()
local conform = require("conform")
conform.setup({
formatters_by_ft = {
javascript = { "prettier" },
typescript = { "prettier" },
javascriptreact = { "prettier" },
typescriptreact = { "prettier" },
svelte = { "prettier" },
css = { "prettier" },
html = { "prettier" },
json = { "prettier" },
yaml = { "prettier" },
markdown = { "prettier" },
graphql = { "prettier" },
liquid = { "prettier" },
lua = { "stylua" },
python = { "isort", "black" },
},
format_on_save = {
lsp_fallback = true,
async = false,
timeout_ms = 1000,
},
})
vim.keymap.set({ "n", "v" }, "<leader>mp", function()
conform.format({
lsp_fallback = true,
async = false,
timeout_ms = 1000,
})
end, { desc = "Format file or range (in visual mode)" })
end,
}

View File

@ -0,0 +1,8 @@
return {
"lukas-reineke/indent-blankline.nvim",
event = { "BufReadPre", "BufNewFile" },
main = "ibl",
opts = {
indent = { char = "" },
},
}

View File

@ -0,0 +1,36 @@
return {
"goolord/alpha-nvim",
event = "VimEnter",
config = function()
local alpha = require("alpha")
local dashboard = require("alpha.themes.dashboard")
-- Set header
dashboard.section.header.val = {
" ",
" ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ ",
" ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ ",
" ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ ",
" ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ ",
" ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ ",
" ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ",
" ",
}
-- Set menu
dashboard.section.buttons.val = {
dashboard.button("e", " > New File", "<cmd>ene<CR>"),
dashboard.button("SPC ee", " > Toggle file explorer", "<cmd>NvimTreeToggle<CR>"),
dashboard.button("SPC ff", "󰱼 > Find File", "<cmd>Telescope find_files<CR>"),
dashboard.button("SPC fs", " > Find Word", "<cmd>Telescope live_grep<CR>"),
dashboard.button("SPC wr", "󰁯 > Restore Session For Current Directory", "<cmd>SessionRestore<CR>"),
dashboard.button("q", " > Quit NVIM", "<cmd>qa<CR>"),
}
-- Send config to alpha
alpha.setup(dashboard.opts)
-- Disable folding on alpha buffer
vim.cmd([[autocmd FileType alpha setlocal nofoldenable]])
end,
}

View File

@ -0,0 +1,16 @@
return {
"rmagatti/auto-session",
config = function()
local auto_session = require("auto-session")
auto_session.setup({
auto_restore_enabled = false,
auto_session_suppress_dirs = { "~/", "~/Dev/", "~/Downloads", "~/Documents", "~/Desktop/" },
})
local keymap = vim.keymap
keymap.set("n", "<leader>wr", "<cmd>SessionRestore<CR>", { desc = "Restore session for cwd" }) -- restore last workspace session for current directory
keymap.set("n", "<leader>ws", "<cmd>SessionSave<CR>", { desc = "Save session for auto session root dir" }) -- save workspace session for current working directory
end,
}

View File

@ -0,0 +1,4 @@
return {
"stevearc/dressing.nvim",
event = "VeryLazy",
}

View File

@ -0,0 +1,19 @@
return {
"numToStr/Comment.nvim",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"JoosepAlviste/nvim-ts-context-commentstring",
},
config = function()
-- import comment plugin safely
local comment = require("Comment")
local ts_context_commentstring = require("ts_context_commentstring.integrations.comment_nvim")
-- enable comment
comment.setup({
-- for commenting tsx, jsx, svelte, html files
pre_hook = ts_context_commentstring.create_pre_hook(),
})
end,
}

View File

@ -0,0 +1,10 @@
return {
"akinsho/bufferline.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
version = "*",
opts = {
options = {
mode = "tabs",
},
},
}

View File

@ -0,0 +1,5 @@
return {
"nvim-lua/plenary.nvim", -- lua functions that many plugins use
--"christoomey/vim-tmux-navigator", -- tmux & split window navigation
"bronson/vim-trailing-whitespace",
}

View File

@ -0,0 +1,50 @@
return {
"williamboman/mason.nvim",
dependencies = {
"williamboman/mason-lspconfig.nvim",
"WhoIsSethDaniel/mason-tool-installer.nvim",
},
config = function()
-- import mason
local mason = require("mason")
-- import mason-lspconfig
local mason_lspconfig = require("mason-lspconfig")
local mason_tool_installer = require("mason-tool-installer")
-- enable mason and configure icons
mason.setup({
ui = {
icons = {
package_installed = "",
package_pending = "",
package_uninstalled = "",
},
},
})
mason_lspconfig.setup({
-- list of servers for mason to install
ensure_installed = {
"bashls",
"clangd",
"lua_ls",
"ltex",
"pyright",
"zls",
},
})
mason_tool_installer.setup({
ensure_installed = {
"prettier", -- prettier formatter
"stylua", -- lua formatter
"isort", -- python formatter
"black", -- python formatter
"pylint",
"eslint_d",
},
})
end,
}

View File

@ -0,0 +1,285 @@
return {
"neovim/nvim-lspconfig",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"hrsh7th/cmp-nvim-lsp",
{ "antosha417/nvim-lsp-file-operations", config = true },
{ "folke/neodev.nvim", opts = {} },
},
config = function()
-- Local word dictionary
local path = vim.fn.stdpath("config") .. "/after/plugins/dictionary-gb.txt"
print(path)
local words = {}
for word in io.open(path, "r"):lines() do
table.insert(words, word)
end
-- import lspconfig plugin
local lspconfig = require("lspconfig")
-- import mason_lspconfig plugin
local mason_lspconfig = require("mason-lspconfig")
-- import cmp-nvim-lsp plugin
local cmp_nvim_lsp = require("cmp_nvim_lsp")
local keymap = vim.keymap -- for conciseness
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function(ev)
-- Buffer local mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local opts = { buffer = ev.buf, silent = true }
-- set keybinds
opts.desc = "Show LSP references"
keymap.set("n", "gR", "<cmd>Telescope lsp_references<CR>", opts) -- show definition, references
opts.desc = "Go to declaration"
keymap.set("n", "gD", vim.lsp.buf.declaration, opts) -- go to declaration
opts.desc = "Show LSP definitions"
keymap.set("n", "gd", "<cmd>Telescope lsp_definitions<CR>", opts) -- show lsp definitions
opts.desc = "Show LSP implementations"
keymap.set("n", "gi", "<cmd>Telescope lsp_implementations<CR>", opts) -- show lsp implementations
opts.desc = "Show LSP type definitions"
keymap.set("n", "gt", "<cmd>Telescope lsp_type_definitions<CR>", opts) -- show lsp type definitions
opts.desc = "See available code actions"
keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection
opts.desc = "Smart rename"
keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts) -- smart rename
opts.desc = "Show buffer diagnostics"
keymap.set("n", "<leader>D", "<cmd>Telescope diagnostics bufnr=0<CR>", opts) -- show diagnostics for file
opts.desc = "Show line diagnostics"
keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts) -- show diagnostics for line
opts.desc = "Go to previous diagnostic"
keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) -- jump to previous diagnostic in buffer
opts.desc = "Go to next diagnostic"
keymap.set("n", "]d", vim.diagnostic.goto_next, opts) -- jump to next diagnostic in buffer
opts.desc = "Show documentation for what is under cursor"
keymap.set("n", "K", vim.lsp.buf.hover, opts) -- show documentation for what is under cursor
opts.desc = "Restart LSP"
keymap.set("n", "<leader>rs", ":LspRestart<CR>", opts) -- mapping to restart lsp if necessary
end,
})
-- used to enable autocompletion (assign to every lsp server config)
local capabilities = cmp_nvim_lsp.default_capabilities()
-- Change the Diagnostic symbols in the sign column (gutter)
-- (not in youtube nvim video)
local signs = { Error = "", Warn = "", Hint = "󰠠 ", Info = "" }
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
end
mason_lspconfig.setup_handlers({
-- default handler for installed servers
--function(server_name)
-- lspconfig[server_name].setup({
-- capabilities = capabilities,
-- })
--end,
["bashls"] = function()
lspconfig["bashls"].setup({
capabilities = capabilities,
})
end,
["clangd"] = function()
lspconfig["clangd"].setup({
capabilities = capabilities,
})
end,
["cmake"] = function()
lspconfig["cmake"].setup({
capabilities = capabilities,
})
end,
--["fish_lsp"] = function()
-- lspconfig["fish_lsp"].setup({
-- capabilities = capabilities,
-- })
--end,
["ltex"] = function()
lspconfig["ltex"].setup({
capabilities = capabilities,
filetypes = {
"bib",
"gitcommit",
"markdown",
"org",
"norg",
"plaintex",
"rst",
"rnoweb",
"tex",
"pandoc",
"quarto",
"rmd",
"context",
"html",
"xhtml",
"mail",
"text",
},
settings = {
ltex = {
language = "en-GB",
dictionary = {
["en-GB"] = words,
},
enabled = {
"bibtex",
"gitcommit",
"markdown",
"org",
"tex",
"restructuredtext",
"rsweave",
"latex",
"quarto",
"rmd",
"context",
"html",
"xhtml",
"mail",
"plaintext",
},
},
},
})
end,
--["svelte"] = function()
-- -- configure svelte server
-- lspconfig["svelte"].setup({
-- capabilities = capabilities,
-- on_attach = function(client, bufnr)
-- vim.api.nvim_create_autocmd("BufWritePost", {
-- pattern = { "*.js", "*.ts" },
-- callback = function(ctx)
-- -- Here use ctx.match instead of ctx.file
-- client.notify("$/onDidChangeTsOrJsFile", { uri = ctx.match })
-- end,
-- })
-- end,
-- })
--end,
--["graphql"] = function()
-- -- configure graphql language server
-- lspconfig["graphql"].setup({
-- capabilities = capabilities,
-- filetypes = { "graphql", "gql", "svelte", "typescriptreact", "javascriptreact" },
-- })
--end,
--["emmet_ls"] = function()
-- -- configure emmet language server
-- lspconfig["emmet_ls"].setup({
-- capabilities = capabilities,
-- filetypes = { "html", "typescriptreact", "javascriptreact", "css", "sass", "scss", "less", "svelte" },
-- })
--end,
["lua_ls"] = function()
-- configure lua server (with special settings)
lspconfig["lua_ls"].setup({
capabilities = capabilities,
on_init = function(client)
if client.workspace_folders then
local path = client.workspace_folders[1].name
if
vim.loop.fs_stat(path .. "/.luarc.json") or vim.loop.fs_stat(path .. "/.luarc.jsonc")
then
return
end
end
client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, {
runtime = {
-- Tell the language server which version of Lua you're using
-- (most likely LuaJIT in the case of Neovim)
version = "LuaJIT",
},
-- Make the server aware of Neovim runtime files
workspace = {
checkThirdParty = false,
library = {
vim.env.VIMRUNTIME,
-- Depending on the usage, you might want to add additional paths here.
-- "${3rd}/luv/library"
-- "${3rd}/busted/library",
},
-- or pull in all of 'runtimepath'. NOTE: this is a lot slower and will cause issues when working on your own configuration (see https://github.com/neovim/nvim-lspconfig/issues/3189)
-- library = vim.api.nvim_get_runtime_file("", true)
},
diagnostics = {
-- Get the language server to recognize the `vim` global
globals = { "vim", "require", "select_opts" },
},
format = {
-- Put format options here
-- NOTE: the value should be STRING!!
defaultConfig = {
indent_style = "space",
indent_size = "4",
},
},
})
end,
settings = {
Lua = {},
},
})
end,
["pylsp"] = function()
-- configure graphql language server
lspconfig["pylsp"].setup({
capabilities = capabilities,
settings = {
pylsp = {
plugins = {
-- formatter options
black = { enabled = true },
autopep8 = { enabled = false },
yapf = { enabled = false },
-- linter options
pylint = { enabled = false, executable = "pylint" },
pyflakes = { enabled = false },
pycodestyle = { enabled = true, maxLineLength = 110 },
-- type checker
pylsp_mypy = { enabled = true },
-- auto-completion options
jedi_completion = { fuzzy = true },
-- import sorting
pyls_isort = { enabled = true },
},
},
},
flags = {
debounce_text_changes = 200,
},
})
end,
["zls"] = function()
lspconfig["zls"].setup({
capabilities = capabilities,
settings = {
cmd = { "~/.local/bin/zls" },
},
})
end,
})
end,
}

69
.config/sway/config Executable file
View File

@ -0,0 +1,69 @@
# Default config for sway
#
# Copy this to ~/.config/sway/config and edit it to your liking.
#
# Read `man 5 sway` for a complete reference.
# openSUSE theme
default_border pixel 2
gaps inner 10
#client.focused #6da741 #173f4f #73ba25
client.focused #00ff00 #00ff00 #00ff00 #00ff00
client.unfocused #00a489 #173f4f #35b9ab
client.focused_inactive #6da741 #00a489 #173f4f
#don't show gaps if there's only one window on the desktop
smart_gaps on
### Variables
#
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Home row direction keys, like vim
set $left h
set $down j
set $up k
set $right l
# Waybar position
set $waybar_position top
# Your preferred terminal emulator
#set $term alacritty #--config-file ~/.config/alacritty/alacritty.yml
set $term ghostty
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
#set $menu dmenu_path | dmenu | xargs swaymsg exec --
# it is set in config.d/50-openSUSE.conf
# wofi as application launcher
set $menu wofi -I -S drun
#set $menu rofi -no-lazy-grab -disable-history -modi "drun" -show drun -theme ~/.config/rofi/config.rasi
# Sway Notification Centre
set $toggle_notification "swaync-client -t -sw"
# Wob
set $wob wob --config ~/.config/sway/wob/wob.ini
# background
set $background ~/.config/backgrounds/tokyonight.jpg
# monitors
set $ext_monitor HDMI-A-1
set $int_monitor eDP-1
# screen capture
set $screen grimshot copy
# screen capture
set $screen_area grimshot copy area
include ~/.config/sway/config.d/*.conf
include ~/.config/sway/inputs/*.conf
include ~/.config/sway/outputs/*.conf
include ~/.config/sway/modes/*.conf
include ~/.config/sway/config.d/*

View File

@ -0,0 +1,143 @@
### Key bindings
#
# Basics:
#
# Start a terminal
bindsym $mod+Shift+Return exec $term
# Kill focused window
bindsym $mod+Shift+c kill
# Start your launcher
bindsym $mod+p exec $menu
# Screen capture
bindsym $mod+Print exec $screen
# Screen capture area
bindsym $mod+Shift+Print exec $screen_area
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging.
floating_modifier $mod normal
# Reload the configuration file
bindsym $mod+q reload
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+q exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
#
# Moving around:
#
# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# Move the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# Ditto, with arrow keys
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
#
# Workspaces:
#
# Switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.
#
# Layout stuff:
#
# You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+b splith
bindsym $mod+v splitv
# Switch the current container between different layout styles
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# Make the current focus fullscreen
bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area
bindsym $mod+space focus mode_toggle
# Move focus to the parent container
bindsym $mod+a focus parent
bindsym $mod+r mode "resize"
# Cycle through workspaces
bindsym $mod+tab workspace next_on_output
bindsym $mod+Shift+tab workspace prev_on_output
bindsym --to-code {
$mod+b splith
$mod+v splitv
}
# Media keys
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym XF86MonBrightnessDown exec brightnessctl -q set 5%- && ( echo $((`brightnessctl get` * 100 / `brightnessctl m`)) > $SWAYSOCK.wob )
bindsym XF86MonBrightnessUp exec brightnessctl -q set +5% && ( echo $((`brightnessctl get` * 100 / `brightnessctl m`)) > $SWAYSOCK.wob )
bindsym XF86AudioRaiseVolume exec pamixer --allow-boost -ui 2 && dc -e "[`pamixer --get-volume`]sM 100d `pamixer --get-volume`<Mp" > $SWAYSOCK.wob
bindsym XF86AudioLowerVolume exec pamixer --allow-boost -ud 2 && dc -e "[`pamixer --get-volume`]sM 100d `pamixer --get-volume`<Mp" > $SWAYSOCK.wob
bindsym XF86AudioMute exec pamixer --toggle-mute && ( pamixer --get-mute && echo 0 > $SWAYSOCK.wob )
# Media player controls
bindsym --no-warn XF86AudioPlay exec playerctl play-pause
bindsym --no-warn XF86AudioNext exec playerctl next
bindsym --no-warn XF86AudioPrev exec playerctl previous
# Shutdown
# unbindsym $mod+Shift+q
# bindsym $mod+Shift+q mode $mode_system
# Toggle notification bar
bindsym $mod+Shift+n exec $toggle_notification

View File

@ -0,0 +1,16 @@
# sway does not set DISPLAY/WAYLAND_DISPLAY in the systemd user environment
# See FS#63021
# Adapted from xorg's 50-systemd-user.sh, which achieves a similar goal.
# Upstream refuses to set XDG_CURRENT_DESKTOP so we have to.
exec systemctl --user set-environment XDG_CURRENT_DESKTOP=sway
exec systemctl --user import-environment DISPLAY \
SWAYSOCK \
WAYLAND_DISPLAY \
XDG_CURRENT_DESKTOP
exec hash dbus-update-activation-environment 2>/dev/null && \
dbus-update-activation-environment --systemd DISPLAY \
SWAYSOCK \
XDG_CURRENT_DESKTOP=sway \
WAYLAND_DISPLAY

View File

@ -0,0 +1,8 @@
#
# Status Bar:
#
bar {
id default
swaybar_command waybar
position $waybar_position
}

View File

@ -0,0 +1,23 @@
# enable numlock
input * xkb_numlock enable
exec {
'[ -x "$(command -v blueman-applet)" ] && blueman-applet'
#'[ -x "$(command -v ~/.config/waybar/scripts/battery-notification.sh)" ] && ~/.config/waybar/scripts/battery-notification.sh'
# Default wallpaper
swaybg -o $int_monitor -i $background
swaybg -o $ext_monitor -i $background
}
exec_always {
emacs --daemon
gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark'
gsettings set org.gnome.desktop.interface icon-theme 'Adwaita'
gsettings set org.gnome.desktop.interface cursor-theme 'Adwaita'
systemctl --user import-environment
test -e $SWAYSOCK.wob || mkfifo $SWAYSOCK.wob
tail -f $SWAYSOCK.wob | $wob
swaync --style ~/.config/sway/swaync/style.css --config ~/.config/sway/swaync/config.json
}
exec /usr/libexec/polkit-gnome-authentication-agent-1

17
.config/sway/env Executable file
View File

@ -0,0 +1,17 @@
# recomended enviroment variables for sway based desktop
# openSUSEway installs/imports this to/from:
# /usr/lib/environment.d/50-openSUSE.conf
# /etc/profile.d/openSUSEway.sh
MOZ_ENABLE_WAYLAND=1
QT_QPA_PLATFORM=wayland-egl
CLUTTER_BACKEND=wayland
ECORE_EVAS_ENGINE=wayland-egl
ELM_ENGINE=wayland_egl
SDL_VIDEODRIVER=wayland
_JAVA_AWT_WM_NONREPARENTING=1
NO_AT_BRIDGE=1
# QT theme for openSUSEway
# needs qt5ct and adwaita-qt5 packages
# default config is /etc/xdg/qt5ct/qt5ct.conf
QT_QPA_PLATFORMTHEME=qt5ct

View File

@ -0,0 +1,14 @@
### Input configuration
#
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
#input type:keyboard {
# xkb_layout "us"
#}
input type:keyboard {
xkb_layout "us"
xkb_variant "altgr-intl"
}

View File

@ -0,0 +1,26 @@
### Input configuration
#
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
input type:touchpad {
dwt enabled
tap enabled
natural_scroll enabled
}
#input type:mouse {
# map_to_output eDP-1
#}
#
#input type:touchpad {
# map_to_output eDP-1
#}
#
#input type:tablet_tool {
# map_to_output eDP-1
#}
#
#input type:touch {
# map_to_output eDP-1
#}

24
.config/sway/modes/10-idle.conf Executable file
View File

@ -0,0 +1,24 @@
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
### Idle configuration
#
# Example configuration:
#
# exec swayidle -w \
# timeout 300 'swaylock -f -c 000000' \
# timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
# before-sleep 'swaylock -f -c 000000'
#
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.
# Lockscreen configuration
set $screenlock 'swaylock -f -c 000000'
# Idle configuration
exec swayidle -w \
timeout 7200 $screenlock \
timeout 3600 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
before-sleep $screenlock

View File

@ -0,0 +1,23 @@
#
# Resizing containers:
#
mode "resize" {
# left will shrink the containers width
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# Ditto, with arrow keys
bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px
bindsym Up resize shrink height 10px
bindsym Right resize grow width 10px
# Return to default mode
bindsym Return mode "default"
bindsym Escape mode "default"
}

View File

@ -0,0 +1,12 @@
#
# Scratchpad:
#
# Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later.
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show

View File

@ -0,0 +1,15 @@
# System mode menu
set $mode_system "What to do? (l) lock, (e) logout, (r) reboot, (s) suspend, (Shift+s) shutdown"
mode $mode_system {
bindsym l exec $screenlock; mode "default"
bindsym e exec swaymsg exit; mode "default"
bindsym r exec systemctl reboot; mode "default"
bindsym s exec systemctl suspend; mode "default"
bindsym Shift+s exec systemctl poweroff; mode "default"
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}

19
.config/sway/modes/recording Executable file
View File

@ -0,0 +1,19 @@
set $mode_recording "<span foreground='$color10'></span> \
<span foreground='$color5'><b>Record</b></span> <span foreground='$color10'>(<b>r</b>)</span> \
<span foreground='$color5'>+ [<span foreground='$color10'><b>Shift</b></span> for ]</span>"
set $recorder /usr/share/sway/scripts/recorder.sh
mode --pango_markup $mode_recording {
$bindsym r exec $recorder, mode "default"
$bindsym Shift+r exec $recorder -a, mode "default"
# Return to default mode.
$bindsym Escape mode "default"
}
## Launch // Recording Mode ##
$bindsym $mod+Shift+r mode $mode_recording
## Launch // Stop Recording Mode ##
$bindsym $mod+Escape exec killall -s SIGINT wf-recorder

23
.config/sway/modes/screenshot Executable file
View File

@ -0,0 +1,23 @@
set $mode_screenshot "<span foreground='$color10'></span> \
<span foreground='$color5'><b>Pick</b></span> <span foreground='$color10'>(<b>p</b>)</span> \
<span foreground='$color5'><b>Output</b></span> <span foreground='$color10'>(<b>o</b>)</span> \
<span foreground='$color7'>+ <span foreground='$color10'><b>Shift</b></span> for </span> \
<span foreground='$color7'>+ <span foreground='$color10'><b>Ctrl</b></span> for </span>"
mode --pango_markup $mode_screenshot {
# output = currently active output
$bindsym o mode "default", exec $screenshot_screen_clipboard
$bindsym Shift+o mode "default", exec $screenshot_screen_file
$bindsym Shift+Ctrl+o mode "default", exec $screenshot_screen_upload
# pick the region to screenshot
$bindsym p mode "default", exec $screenshot_selection_clipboard
$bindsym Shift+p mode "default", exec $screenshot_selection_file
$bindsym Shift+Ctrl+p mode "default", exec $screenshot_selection_upload
# Return to default mode.
$bindsym Escape mode "default"
}
## Launch // Screenshot Mode ##
$bindsym Print mode $mode_screenshot

View File

@ -0,0 +1,35 @@
### Output configuration
#
# Example configuration:
#
# output HDMI-A-1 resolution 1920x1080 position 1920,0
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
# Default wallpaper output * bg $background fill
#
# output $ext_monitor pos 0 0 res 1920x1080 output $int_monitor pos 1920 0 res 1920x1080
#
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
output $ext_monitor pos 0 0 res 1920x1080
output $int_monitor pos 1920 0 res 1920x1080
# focus output $ext_monitor
# focus output $int_monitor
bindswitch --reload --locked lid:on output $int_monitor disable
bindswitch --reload --locked lid:off output $int_monitor enable
workspace 1 output $ext_monitor
workspace 2 output $ext_monitor
workspace 3 output $ext_monitor
workspace 4 output $ext_monitor
workspace 5 output $ext_monitor
workspace 6 output $int_monitor
workspace 7 output $int_monitor
workspace 8 output $int_monitor
workspace 9 output $int_monitor
workspace 0 output $int_monitor

38
.config/sway/swaync/config.json Executable file
View File

@ -0,0 +1,38 @@
{
"$schema": "/etc/xdg/swaync/configSchema.json",
"positionX": "right",
"positionY": "top",
"control-center-margin-top": 0,
"control-center-margin-bottom": 0,
"control-center-margin-right": 0,
"control-center-margin-left": 0,
"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": true,
"control-center-width": 500,
"control-center-height": 600,
"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"
}
},
"notification-visibility": {
"example-name": {
"state": "muted",
"urgency": "Low",
"app-name": "Spotify"
}
}
}

Some files were not shown because too many files have changed in this diff Show More