Update dotfiles
|
@ -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"
|
|
@ -0,0 +1,36 @@
|
||||||
|
complete -c swww -n "__fish_use_subcommand" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||||
|
complete -c swww -n "__fish_use_subcommand" -s V -l version -d 'Print version'
|
||||||
|
complete -c swww -n "__fish_use_subcommand" -f -a "clear" -d 'Fills the specified outputs with the given color'
|
||||||
|
complete -c swww -n "__fish_use_subcommand" -f -a "img" -d 'Sends an image (or animated gif) for the daemon to display'
|
||||||
|
complete -c swww -n "__fish_use_subcommand" -f -a "init" -d 'Initializes the daemon'
|
||||||
|
complete -c swww -n "__fish_use_subcommand" -f -a "kill" -d 'Kills the daemon'
|
||||||
|
complete -c swww -n "__fish_use_subcommand" -f -a "query" -d 'Asks the daemon to print output information (names and dimensions)'
|
||||||
|
complete -c swww -n "__fish_use_subcommand" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from clear" -s o -l outputs -d 'Comma separated list of outputs to display the image at' -r
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from clear" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -s o -l outputs -d 'Comma separated list of outputs to display the image at' -r
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -l resize -d 'Whether to resize the image and the method by which to resize it' -r -f -a "{no Do not resize the image,crop Resize the image to fill the whole screen\, cropping out parts that don\'t fit,fit Resize the image to fit inside the screen\, preserving the original aspect ratio}"
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -l fill-color -d 'Which color to fill the padding with when output image does not fill screen' -r
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -s f -l filter -d 'Filter to use when scaling images (run swww img --help to see options)' -r
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -s t -l transition-type -d 'Sets the type of transition. Default is \'simple\', that fades into the new image' -r
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -l transition-step -d 'How fast the transition approaches the new image' -r
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -l transition-duration -d 'How long the transition takes to complete in seconds' -r
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -l transition-fps -d 'Frame rate for the transition effect' -r
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -l transition-angle -d 'This is used for the \'wipe\' and \'wave\' transitions. It controls the angle of the wipe' -r
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -l transition-pos -d 'This is only used for the \'grow\',\'outer\' transitions. It controls the center of circle (default is \'center\')' -r
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -l transition-bezier -d 'bezier curve to use for the transition https://cubic-bezier.com is a good website to get these values from' -r
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -l transition-wave -d 'currently only used for \'wave\' transition to control the width and height of each wave' -r
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -l no-resize -d 'Do not resize the image. Equivalent to `--resize=no`'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -l invert-y -d 'inverts the y position sent in \'transiiton_pos\' flag'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from img" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from init" -l no-daemon -d 'Don\'t fork the daemon. This will keep it running in the current terminal'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from init" -l no-cache -d 'Don\'t load the cache *during initialization* (it still loads on monitor (re)connection)'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from init" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from kill" -s h -l help -d 'Print help'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from query" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from clear; and not __fish_seen_subcommand_from img; and not __fish_seen_subcommand_from init; and not __fish_seen_subcommand_from kill; and not __fish_seen_subcommand_from query; and not __fish_seen_subcommand_from help" -f -a "clear" -d 'Fills the specified outputs with the given color'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from clear; and not __fish_seen_subcommand_from img; and not __fish_seen_subcommand_from init; and not __fish_seen_subcommand_from kill; and not __fish_seen_subcommand_from query; and not __fish_seen_subcommand_from help" -f -a "img" -d 'Sends an image (or animated gif) for the daemon to display'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from clear; and not __fish_seen_subcommand_from img; and not __fish_seen_subcommand_from init; and not __fish_seen_subcommand_from kill; and not __fish_seen_subcommand_from query; and not __fish_seen_subcommand_from help" -f -a "init" -d 'Initializes the daemon'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from clear; and not __fish_seen_subcommand_from img; and not __fish_seen_subcommand_from init; and not __fish_seen_subcommand_from kill; and not __fish_seen_subcommand_from query; and not __fish_seen_subcommand_from help" -f -a "kill" -d 'Kills the daemon'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from clear; and not __fish_seen_subcommand_from img; and not __fish_seen_subcommand_from init; and not __fish_seen_subcommand_from kill; and not __fish_seen_subcommand_from query; and not __fish_seen_subcommand_from help" -f -a "query" -d 'Asks the daemon to print output information (names and dimensions)'
|
||||||
|
complete -c swww -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from clear; and not __fish_seen_subcommand_from img; and not __fish_seen_subcommand_from init; and not __fish_seen_subcommand_from kill; and not __fish_seen_subcommand_from query; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
|
@ -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
|
|
@ -45,6 +45,13 @@ if status is-interactive
|
||||||
set pkgdir "$HOME/.npm/"
|
set pkgdir "$HOME/.npm/"
|
||||||
alias npm="npm --cache $srcir/npm-cache"
|
alias npm="npm --cache $srcir/npm-cache"
|
||||||
|
|
||||||
|
bind \el forward-word
|
||||||
|
bind \eh backward-word
|
||||||
|
|
||||||
|
bind \eg beginning-of-line
|
||||||
|
bind \eG end-of-line
|
||||||
|
|
||||||
|
|
||||||
set fish_greeting
|
set fish_greeting
|
||||||
# Commands to run in interactive sessions can go here
|
# Commands to run in interactive sessions can go here
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,3 +5,4 @@ catppuccin/fish
|
||||||
jorgebucaran/autopair.fish
|
jorgebucaran/autopair.fish
|
||||||
joshmedeski/fish-lf-icons
|
joshmedeski/fish-lf-icons
|
||||||
nickeb96/puffer-fish
|
nickeb96/puffer-fish
|
||||||
|
patrickf1/fzf.fish
|
||||||
|
|
|
@ -8,7 +8,8 @@ SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fish
|
||||||
SETUVAR _fisher_jorgebucaran_2F_nvm_2E_fish_files:\x7e/\x2econfig/fish/functions/_nvm_index_update\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_list\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_activate\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_deactivate\x2efish\x1e\x7e/\x2econfig/fish/functions/nvm\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/nvm\x2efish\x1e\x7e/\x2econfig/fish/completions/nvm\x2efish
|
SETUVAR _fisher_jorgebucaran_2F_nvm_2E_fish_files:\x7e/\x2econfig/fish/functions/_nvm_index_update\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_list\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_activate\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_deactivate\x2efish\x1e\x7e/\x2econfig/fish/functions/nvm\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/nvm\x2efish\x1e\x7e/\x2econfig/fish/completions/nvm\x2efish
|
||||||
SETUVAR _fisher_joshmedeski_2F_fish_2D_lf_2D_icons_files:\x7e/\x2econfig/fish/conf\x2ed/lf\x2dicons\x2efish
|
SETUVAR _fisher_joshmedeski_2F_fish_2D_lf_2D_icons_files:\x7e/\x2econfig/fish/conf\x2ed/lf\x2dicons\x2efish
|
||||||
SETUVAR _fisher_nickeb96_2F_puffer_2D_fish_files:\x7e/\x2econfig/fish/functions/_puffer_fish_expand_bang\x2efish\x1e\x7e/\x2econfig/fish/functions/_puffer_fish_expand_dots\x2efish\x1e\x7e/\x2econfig/fish/functions/_puffer_fish_expand_lastarg\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/puffer_fish_key_bindings\x2efish
|
SETUVAR _fisher_nickeb96_2F_puffer_2D_fish_files:\x7e/\x2econfig/fish/functions/_puffer_fish_expand_bang\x2efish\x1e\x7e/\x2econfig/fish/functions/_puffer_fish_expand_dots\x2efish\x1e\x7e/\x2econfig/fish/functions/_puffer_fish_expand_lastarg\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/puffer_fish_key_bindings\x2efish
|
||||||
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ejorgebucaran/nvm\x2efish\x1ederekstavis/fish\x2dneovim\x1ecatppuccin/fish\x1ejorgebucaran/autopair\x2efish\x1ejoshmedeski/fish\x2dlf\x2dicons\x1enickeb96/puffer\x2dfish
|
SETUVAR _fisher_patrickf1_2F_fzf_2E_fish_files:\x7e/\x2econfig/fish/functions/_fzf_configure_bindings_help\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_extract_var_info\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_changed_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_diff_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_file_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_log\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_history\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_processes\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_wrapper\x2efish\x1e\x7e/\x2econfig/fish/functions/fzf_configure_bindings\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/fzf\x2efish\x1e\x7e/\x2econfig/fish/completions/fzf_configure_bindings\x2efish
|
||||||
|
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ejorgebucaran/nvm\x2efish\x1ederekstavis/fish\x2dneovim\x1ecatppuccin/fish\x1ejorgebucaran/autopair\x2efish\x1ejoshmedeski/fish\x2dlf\x2dicons\x1enickeb96/puffer\x2dfish\x1epatrickf1/fzf\x2efish
|
||||||
SETUVAR _fisher_upgraded_to_4_4:\x1d
|
SETUVAR _fisher_upgraded_to_4_4:\x1d
|
||||||
SETUVAR fish_color_autosuggestion:747369
|
SETUVAR fish_color_autosuggestion:747369
|
||||||
SETUVAR fish_color_cancel:\x2d\x2dreverse
|
SETUVAR fish_color_cancel:\x2d\x2dreverse
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,20 @@
|
||||||
|
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 FZF_DEFAULT_OPTS is not set, then set some sane defaults.
|
||||||
|
# See https://github.com/junegunn/fzf#environment-variables
|
||||||
|
if not set --query FZF_DEFAULT_OPTS
|
||||||
|
# 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
|
|
@ -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
|
|
@ -11,8 +11,7 @@
|
||||||
# font=JetBrainsMono Nerd Font Mono:size=13
|
# font=JetBrainsMono Nerd Font Mono:size=13
|
||||||
|
|
||||||
include=~/.cache/wal/foot.ini
|
include=~/.cache/wal/foot.ini
|
||||||
font=FiraCode Nerd Font:size=13
|
font=FiraCode Nerd Font:size=11
|
||||||
|
|
||||||
# font=monospace:size=8
|
# font=monospace:size=8
|
||||||
# font-bold=<bold variant of regular font>
|
# font-bold=<bold variant of regular font>
|
||||||
# font-italic=<italic variant of regular font>
|
# font-italic=<italic variant of regular font>
|
||||||
|
@ -73,7 +72,6 @@ alternate-scroll-mode=yes
|
||||||
[colors]
|
[colors]
|
||||||
|
|
||||||
alpha = 0.85
|
alpha = 0.85
|
||||||
|
|
||||||
# foreground = #d8dee9
|
# foreground = #d8dee9
|
||||||
# background = #2e3440
|
# background = #2e3440
|
||||||
|
|
||||||
|
|
|
@ -1,35 +1,142 @@
|
||||||
# This is an example Hyprland config file.
|
# This is an example Hyprland config file.
|
||||||
#
|
|
||||||
# Refer to the wiki for more information.
|
# Refer to the wiki for more information.
|
||||||
|
# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/
|
||||||
|
|
||||||
#
|
|
||||||
# Please note not all available settings / options are set here.
|
# Please note not all available settings / options are set here.
|
||||||
# For a full list, see the wiki
|
# For a full list, see the wiki
|
||||||
#
|
|
||||||
|
|
||||||
|
# You can split this configuration into multiple files
|
||||||
|
# Create your files separately and then link them to this file like this:
|
||||||
|
# source = ~/.config/hypr/myColors.conf
|
||||||
|
|
||||||
|
|
||||||
|
# Monitors
|
||||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||||
|
|
||||||
monitor=,1920x1080,auto,1
|
monitor=,1920x1080,auto,1
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
|
||||||
|
|
||||||
# Execute your favorite apps at launch
|
# My programs
|
||||||
# exec-once = waybar & hyprpaper & firefox
|
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||||
|
|
||||||
|
$terminal = foot
|
||||||
|
$menu = wofi --style ~/.cache/wal/style-wofi.css --show drun -I -i
|
||||||
|
|
||||||
|
|
||||||
|
# Set programs that you use
|
||||||
|
# $terminal = kitty
|
||||||
|
# $fileManager = dolphin
|
||||||
|
# $menu = wofi --show drun
|
||||||
|
|
||||||
|
|
||||||
|
# AUTOSTART
|
||||||
|
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||||
|
# Or execute your favorite apps at launch like this:
|
||||||
|
|
||||||
|
|
||||||
|
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
||||||
|
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
|
||||||
exec-once = light -S 40
|
exec-once = light -S 40
|
||||||
exec-once = $HOME/bin/start-wallpaper
|
|
||||||
exec-once = waybar
|
exec-once = waybar
|
||||||
exec-once = dunst -config ~/.config/dunst/dunstrc
|
exec-once = dunst -config ~/.config/dunst/dunstrc
|
||||||
exec-once = telegram-desktop
|
|
||||||
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
|
|
||||||
# exec-once = /usr/bin/chromium-browser-stable --disable-gpu --disable-software-rasterizer
|
|
||||||
exec-once = $HOME/bin/battery-daemon &
|
exec-once = $HOME/bin/battery-daemon &
|
||||||
|
exec-once = telegram-desktop
|
||||||
|
|
||||||
|
|
||||||
|
# Environment variable
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
||||||
|
|
||||||
|
env = XCURSOR_SIZE,24
|
||||||
|
env = HYPRCURSOR_SIZE,24
|
||||||
|
|
||||||
|
|
||||||
|
# Look and feel
|
||||||
|
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||||
|
|
||||||
# Source a file (multi-file configs)
|
|
||||||
# source = ~/.config/hypr/myColors.conf
|
|
||||||
# source = ~/.config/wal/templates/colors-hyprland.conf
|
|
||||||
source = ~/.cache/wal/colors-hyprland.conf
|
source = ~/.cache/wal/colors-hyprland.conf
|
||||||
|
|
||||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
general {
|
||||||
|
gaps_in = 1
|
||||||
|
gaps_out = 1
|
||||||
|
border_size = 2
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||||
|
col.active_border = $color11
|
||||||
|
col.inactive_border = $color0
|
||||||
|
# col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||||
|
# col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
|
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||||
|
resize_on_border = false
|
||||||
|
|
||||||
|
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||||
|
allow_tearing = false
|
||||||
|
|
||||||
|
layout = dwindle
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||||
|
decoration {
|
||||||
|
rounding = 7
|
||||||
|
|
||||||
|
# Change transparency of focused and unfocused windows
|
||||||
|
active_opacity = 1
|
||||||
|
inactive_opacity = 1
|
||||||
|
|
||||||
|
# drop_shadow = true
|
||||||
|
# shadow_range = 4
|
||||||
|
# shadow_render_power = 3
|
||||||
|
# col.shadow = rgba(1a1a1aee)
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||||
|
# blur {
|
||||||
|
# enabled = true
|
||||||
|
# size = 3
|
||||||
|
# passes = 1
|
||||||
|
#
|
||||||
|
# vibrancy = 0.1696
|
||||||
|
# }
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||||
|
animations {
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||||
|
|
||||||
|
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||||
|
|
||||||
|
animation = windows, 1, 7, myBezier
|
||||||
|
animation = windowsOut, 1, 7, default, popin 80%
|
||||||
|
animation = border, 1, 10, default
|
||||||
|
animation = borderangle, 1, 8, default
|
||||||
|
animation = fade, 1, 7, default
|
||||||
|
animation = workspaces, 1, 6, default
|
||||||
|
}
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||||
|
dwindle {
|
||||||
|
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
|
preserve_split = true # You probably want this
|
||||||
|
}
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||||
|
master {
|
||||||
|
new_status = master
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||||
|
misc {
|
||||||
|
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||||
|
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Input
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||||
|
|
||||||
input {
|
input {
|
||||||
kb_layout = us,ru,ua
|
kb_layout = us,ru,ua
|
||||||
kb_variant =
|
kb_variant =
|
||||||
|
@ -39,140 +146,66 @@ input {
|
||||||
|
|
||||||
follow_mouse = 1
|
follow_mouse = 1
|
||||||
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = no
|
|
||||||
}
|
|
||||||
|
|
||||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
general {
|
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
gaps_in = 2
|
|
||||||
gaps_out = 8
|
|
||||||
border_size = 2
|
|
||||||
|
|
||||||
col.active_border = $color11
|
|
||||||
col.inactive_border = $color0
|
|
||||||
|
|
||||||
# col.active_border = rgb(A7c080) 45deg
|
|
||||||
# col.inactive_border = rgb(2d353b)
|
|
||||||
|
|
||||||
# layout = dwindle
|
|
||||||
}
|
|
||||||
|
|
||||||
decoration {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
rounding = 10
|
|
||||||
blur: 3
|
|
||||||
|
|
||||||
drop_shadow = yes
|
|
||||||
shadow_range = 4
|
|
||||||
shadow_render_power = 3
|
|
||||||
col.shadow = rgba(1a1a1aee)
|
|
||||||
|
|
||||||
dim_inactive = 1
|
|
||||||
dim_strength = 0.4
|
|
||||||
}
|
|
||||||
|
|
||||||
animations {
|
|
||||||
enabled = yes
|
|
||||||
|
|
||||||
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
|
||||||
|
|
||||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
|
||||||
|
|
||||||
animation = windows, 1, 7, myBezier
|
|
||||||
animation = windowsOut, 1, 7, default, popin 80%
|
|
||||||
animation = border, 1, 10, default
|
|
||||||
animation = fade, 1, 7, default
|
|
||||||
animation = workspaces, 1, 6, default
|
|
||||||
}
|
|
||||||
|
|
||||||
dwindle {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
|
||||||
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
|
||||||
preserve_split = yes # you probably want this
|
|
||||||
}
|
|
||||||
|
|
||||||
master {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
|
||||||
new_is_master = true
|
|
||||||
}
|
|
||||||
|
|
||||||
gestures {
|
gestures {
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
workspace_swipe = false
|
||||||
workspace_swipe = off
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Example per-device config
|
# Example per-device config
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
|
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||||
device:epic mouse V1 {
|
device {
|
||||||
|
name = epic-mouse-v1
|
||||||
sensitivity = -0.5
|
sensitivity = -0.5
|
||||||
}
|
}
|
||||||
|
|
||||||
# Example windowrule v1
|
|
||||||
# windowrule = float, ^(kitty)$
|
|
||||||
# Example windowrule v2
|
|
||||||
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
|
||||||
|
|
||||||
windowrulev2 = float,class:^(xdg-desktop-portal-gtk)$
|
# Keybindings
|
||||||
windowrulev2 = move 196 127,class:^(xdg-desktop-portal-gtk)$
|
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||||
windowrulev2 = size 791 667,class:^(xdg-desktop-portal-gtk)$
|
|
||||||
|
|
||||||
|
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||||
windowrulev2 = float,title:^(Telegram)$
|
|
||||||
windowrulev2 = workspace 2 silent,title:^(Telegram)$
|
|
||||||
windowrulev2 = size 641 1022,title:^(Telegram)$
|
|
||||||
windowrulev2 = move 25 45,title:^(Telegram)$
|
|
||||||
|
|
||||||
windowrulev2 = workspace 1 silent,title:^(chromium-browser)$
|
|
||||||
|
|
||||||
$mainMod = SUPER
|
|
||||||
|
|
||||||
bind = $mainMod SHIFT, S,exec, bin/w-screenrecord
|
|
||||||
bind = $mainMod SHIFT, b, exec, chromium-browser-stable --disable-gpu --disable-software-rasterizer
|
|
||||||
|
|
||||||
# bindl=,switch:[switch name],exec,$HOME/bin/lockscreen
|
|
||||||
|
|
||||||
|
|
||||||
bind = $mainMod, C, killactive,
|
|
||||||
bind = $mainMod, X, exit,
|
|
||||||
bind = $mainMod, F, fullscreen, 2
|
|
||||||
bind = $mainMod, S, togglefloating,
|
|
||||||
bind = $mainMod, P, pseudo, # dwindle
|
|
||||||
bind = $mainMod ALT, J, togglesplit, # dwindle
|
|
||||||
|
|
||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||||
|
|
||||||
# Example volume button that allows press and hold
|
bind = $mainMod, RETURN, exec, $terminal
|
||||||
|
bind = $mainMod, C, killactive,
|
||||||
|
bind = $mainMod, M, exit,
|
||||||
|
bind = $mainMod, V, togglefloating,
|
||||||
|
bind = $mainMod, F, fullscreen, 2
|
||||||
|
bind = $mainMod, D, exec, $menu
|
||||||
|
bind = $mainMod, P, pseudo, # dwindle
|
||||||
|
bind = $mainMod, J, togglesplit, # dwindle
|
||||||
|
|
||||||
|
# My utils
|
||||||
|
bind = $mainMod, N, exec, $terminal -e lf
|
||||||
|
bind = $mainMod, Shift m, exec, $terminal -e cmus
|
||||||
|
bind = $mainMod, b, exec, $terminal -e bluetuith
|
||||||
|
|
||||||
binde= ,F2, exec, pactl set-sink-volume @DEFAULT_SINK@ -1%
|
binde= ,F2, exec, pactl set-sink-volume @DEFAULT_SINK@ -1%
|
||||||
binde= ,F3, exec, pactl set-sink-volume @DEFAULT_SINK@ +1%
|
binde= ,F3, exec, pactl set-sink-volume @DEFAULT_SINK@ +1%
|
||||||
|
|
||||||
bind = $mainMod, b, exec, foot -e bluetuith
|
bind = $mainMod, l, exec, lockscreen
|
||||||
bind = $mainMod, RETURN, exec, foot
|
|
||||||
bind = $mainMod, N, exec, foot -e lf
|
bind = $mainMod SHIFT, S,exec, bin/w-screenrecord
|
||||||
bind = $mainMod, M, exec, foot -e cmus
|
|
||||||
bind = $mainMod, d, exec, wofi --style ~/.cache/wal/style-wofi.css --show drun -I i
|
|
||||||
|
|
||||||
bind = ,Print, exec, hyprshot -c --mode output --clipboard-only
|
bind = ,Print, exec, hyprshot -c --mode output --clipboard-only
|
||||||
bind = SHIFT, Print, exec, hyprshot -c --mode output -o $HOME/Pictures/screenshots --filename "$(date +"%Y-%m-%d_%H-%M-%S").png"
|
|
||||||
|
|
||||||
bind = CONTROL, Print, exec, hyprshot -c --mode region --clipboard-only
|
bind = CONTROL, Print, exec, hyprshot -c --mode region --clipboard-only
|
||||||
bind = CONTROL SHIFT, Print, exec, hyprshot -c --mode region -o $HOME/Pictures/screenshots --filename "$(date +"%Y-%m-%d_%H-%M-%S").png"
|
|
||||||
|
|
||||||
bind = $mainMod, Print, exec, hyprshot -c --mode window --clipboard-only
|
bind = SHIFT, Print, exec, hyprshot -c --mode output -o $HOME/Pictures/screenshots --filename "$(date +"%Y-%m-%d_%H-%M-%S").png"
|
||||||
|
bind = CONTROL SHIFT, Print, exec, hyprshot -c --mode region -o $HOME/Pictures/screenshots --filename "$(date +"%Y-%m-%d_%H-%M-%S").png"
|
||||||
bind = $mainMod SHIFT, Print, exec, hyprshot -c --mode window -o $HOME/Pictures/screenshots --filename "$(date +"%Y-%m-%d_%H-%M-%S").png"
|
bind = $mainMod SHIFT, Print, exec, hyprshot -c --mode window -o $HOME/Pictures/screenshots --filename "$(date +"%Y-%m-%d_%H-%M-%S").png"
|
||||||
|
|
||||||
|
# not forget to install xdg-desktop-portal 1.14.6
|
||||||
|
# Modify file /usr/share/xdg-desktop-portal/portals/{}.portal UserIn=sway;wlroots
|
||||||
bind = ALT, Print, exec, flameshot-makescreenshot-to-clipboard
|
bind = ALT, Print, exec, flameshot-makescreenshot-to-clipboard
|
||||||
bind = ALT SHIFT, Print, exec, flameshot-makescreenshot
|
bind = ALT SHIFT, Print, exec, flameshot-makescreenshot
|
||||||
|
|
||||||
# bind = $mainMod, SHIFT, L, exec, lockscreen
|
|
||||||
bind = ALT, L, exec, lockscreen
|
|
||||||
|
|
||||||
# not forget install xdg-desktop-portal 1.14.6
|
|
||||||
# Modify file /usr/share/xdg-desktop-portal/portals/{}.portal UserIn=sway;wlroots
|
|
||||||
|
|
||||||
# Move focus with mainMod + kjlh
|
# Move focus with mainMod + kjlh
|
||||||
bind = $mainMod, k, movefocus,u
|
bind = $mainMod, k, movefocus,u
|
||||||
|
@ -180,6 +213,12 @@ bind = $mainMod, j, movefocus,d
|
||||||
bind = $mainMod, l, movefocus,r
|
bind = $mainMod, l, movefocus,r
|
||||||
bind = $mainMod, h, movefocus,l
|
bind = $mainMod, h, movefocus,l
|
||||||
|
|
||||||
|
# Move windows
|
||||||
|
bind = $mainMod SHIFT, k, movewindow, u
|
||||||
|
bind = $mainMod SHIFT, j, movewindow, d
|
||||||
|
bind = $mainMod SHIFT, l, movewindow, r
|
||||||
|
bind = $mainMod SHIFT, h, movewindow, l
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
# Switch workspaces with mainMod + [0-9]
|
||||||
bind = $mainMod, 1, workspace, 1
|
bind = $mainMod, 1, workspace, 1
|
||||||
bind = $mainMod, 2, workspace, 2
|
bind = $mainMod, 2, workspace, 2
|
||||||
|
@ -204,20 +243,33 @@ bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||||
|
|
||||||
|
# Example special workspace (scratchpad)
|
||||||
|
bind = $mainMod, S, togglespecialworkspace, magic
|
||||||
|
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||||
|
|
||||||
# Scroll through existing workspaces with mainMod + scroll
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
bind = $mainMod, mouse_down, workspace, e+1
|
bind = $mainMod, mouse_down, workspace, e+1
|
||||||
bind = $mainMod, mouse_up, workspace, e-1
|
bind = $mainMod, mouse_up, workspace, e-1
|
||||||
|
|
||||||
# Move windows
|
|
||||||
bind = $mainMod SHIFT,k, movewindow, u
|
|
||||||
bind = $mainMod SHIFT,j, movewindow, d
|
|
||||||
bind = $mainMod SHIFT,l, movewindow, r
|
|
||||||
bind = $mainMod SHIFT,h, movewindow, l
|
|
||||||
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
misc {
|
|
||||||
disable_hyprland_logo = true
|
# Windows and workspaces
|
||||||
}
|
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||||
|
|
||||||
|
windowrulev2 = float,class:^(xdg-desktop-portal-gtk)$
|
||||||
|
windowrulev2 = move 196 127,class:^(xdg-desktop-portal-gtk)$
|
||||||
|
windowrulev2 = size 791 667,class:^(xdg-desktop-portal-gtk)$
|
||||||
|
|
||||||
|
|
||||||
|
windowrulev2 = float,title:^(Telegram)$
|
||||||
|
windowrulev2 = workspace 2 silent,title:^(Telegram)$
|
||||||
|
windowrulev2 = size 644 1011,title:^(Telegram)$
|
||||||
|
windowrulev2 = move 15 56,title:^(Telegram)$
|
||||||
|
|
||||||
|
windowrulev2 = workspace 1 silent,title:^(chromium-browser)$
|
||||||
|
|
||||||
|
# windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
|
||||||
|
|
|
@ -16,6 +16,18 @@ cmd edit-config ${{
|
||||||
lf -remote "send $id source ~/.config/lf/lfrc"
|
lf -remote "send $id source ~/.config/lf/lfrc"
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
cmd remove ${{
|
||||||
|
if [ -z $fs ]; then
|
||||||
|
rm -fr $f
|
||||||
|
else
|
||||||
|
IFS=':'; echo $fs | tr " " "\n"
|
||||||
|
echo 'delete? [y/n]'
|
||||||
|
read ans
|
||||||
|
|
||||||
|
[ $ans = 'y' ] && (echo 'deleting files...' && rm -fr $fs) || (echo 'cancelled...')
|
||||||
|
fi
|
||||||
|
}}
|
||||||
|
|
||||||
cmd open &{{
|
cmd open &{{
|
||||||
case $(file --mime-type "$f" -bL) in
|
case $(file --mime-type "$f" -bL) in
|
||||||
text/*|application/json) lf -remote "send $id \$$EDITOR \"$fx\"";;
|
text/*|application/json) lf -remote "send $id \$$EDITOR \"$fx\"";;
|
||||||
|
@ -178,6 +190,7 @@ map t
|
||||||
map u
|
map u
|
||||||
map a
|
map a
|
||||||
map b
|
map b
|
||||||
|
map d
|
||||||
|
|
||||||
map ua unarchive
|
map ua unarchive
|
||||||
|
|
||||||
|
@ -203,7 +216,7 @@ map mt move-to-trash
|
||||||
map dt delete-from-trash
|
map dt delete-from-trash
|
||||||
map tr restore-from-trash
|
map tr restore-from-trash
|
||||||
map trl trash-restore-list
|
map trl trash-restore-list
|
||||||
|
map dD $IFS=':'; rm -rf $fx
|
||||||
|
|
||||||
map R reload
|
map R reload
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"terminal": "nvimterm"}
|
|
@ -1,13 +1,27 @@
|
||||||
vim.api.nvim_create_autocmd({"WinEnter","BufEnter"},{
|
|
||||||
callback = function()
|
|
||||||
vim.opt.statusline = "%F"
|
|
||||||
end
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd({"BufEnter","BufWinEnter","WinEnter","CmdwinEnter"},{
|
vim.api.nvim_create_autocmd({"BufEnter","BufWinEnter","WinEnter","CmdwinEnter"},{
|
||||||
callback = function()
|
callback = function()
|
||||||
if vim.fn.expand("%") == "NvimTree_1" then
|
if vim.fn.expand("%") == "NvimTree_1" then
|
||||||
vim.opt.statusline = " NvimTree"
|
vim.opt.statusline = " NvimTree"
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
local ok, statusline_output = pcall(require, "core.statusline")
|
||||||
|
if ok then
|
||||||
|
vim.opt.statusline = statusline_output
|
||||||
|
else
|
||||||
|
local ok, notify = pcall(require, "notify")
|
||||||
|
if not ok then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
print(statusline_output)
|
||||||
|
notify("Error loading status line")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- vim.api.nvim_create_autocmd({"BufEnter","BufWinEnter","WinEnter","CmdwinEnter"},{
|
||||||
|
-- callback = function()
|
||||||
|
--
|
||||||
|
-- end,
|
||||||
|
-- })
|
||||||
|
|
|
@ -18,3 +18,11 @@ keymap('n', 'gwl', '<C-w>l')
|
||||||
keymap("n", "<space>bf", ":bfirst<CR>",{desc = "[G]oto first buffer"})
|
keymap("n", "<space>bf", ":bfirst<CR>",{desc = "[G]oto first buffer"})
|
||||||
keymap("n", "<space>bl", ":blast<CR>", {desc = "[G]oto last buffer"})
|
keymap("n", "<space>bl", ":blast<CR>", {desc = "[G]oto last buffer"})
|
||||||
keymap("n", "<space>bn", ":bnext<CR>", {desc = "[G]oto next buffer"})
|
keymap("n", "<space>bn", ":bnext<CR>", {desc = "[G]oto next buffer"})
|
||||||
|
|
||||||
|
vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts)
|
||||||
|
vim.keymap.set('t', 'jk', [[<C-\><C-n>]], opts)
|
||||||
|
vim.keymap.set('t', '<C-h>', [[<Cmd>wincmd h<CR>]], opts)
|
||||||
|
vim.keymap.set('t', '<C-j>', [[<Cmd>wincmd j<CR>]], opts)
|
||||||
|
vim.keymap.set('t', '<C-k>', [[<Cmd>wincmd k<CR>]], opts)
|
||||||
|
vim.keymap.set('t', '<C-l>', [[<Cmd>wincmd l<CR>]], opts)
|
||||||
|
vim.keymap.set('t', '<C-w>', [[<C-\><C-n><C-w>]], opts)
|
||||||
|
|
|
@ -7,9 +7,7 @@ end
|
||||||
|
|
||||||
-- Setup colorscheme
|
-- Setup colorscheme
|
||||||
local ok, err = pcall(function()
|
local ok, err = pcall(function()
|
||||||
|
local colorscheme = "kanagawa-wave"
|
||||||
local colorscheme = "everforest"
|
|
||||||
|
|
||||||
if colorscheme == "nord" then
|
if colorscheme == "nord" then
|
||||||
vim.g.diagnostic_sings = {"", "", "", ""}
|
vim.g.diagnostic_sings = {"", "", "", ""}
|
||||||
end
|
end
|
||||||
|
@ -18,9 +16,11 @@ local ok, err = pcall(function()
|
||||||
vim.g.diagnostic_sings = {"", "", "", ""}
|
vim.g.diagnostic_sings = {"", "", "", ""}
|
||||||
end
|
end
|
||||||
|
|
||||||
if colorscheme == "everforest" then
|
|
||||||
vim.g.diagnostic_sings = {" ", " ", " ", " "}
|
vim.g.diagnostic_sings = {" ", " ", " ", " "}
|
||||||
end
|
|
||||||
|
-- if colorscheme == "everforest" then
|
||||||
|
-- vim.g.diagnostic_sings = {" ", " ", " ", " "}
|
||||||
|
-- end
|
||||||
|
|
||||||
-- vim.cmd('colorscheme catppuccin-macchiato')
|
-- vim.cmd('colorscheme catppuccin-macchiato')
|
||||||
-- vim.cmd('colorscheme aquarium')
|
-- vim.cmd('colorscheme aquarium')
|
||||||
|
@ -31,6 +31,11 @@ if not ok then
|
||||||
print(err)
|
print(err)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- vim.opt.statusline=statusline_output
|
||||||
|
-- if ok then
|
||||||
|
--
|
||||||
|
-- end
|
||||||
|
|
||||||
opt.encoding = "utf-8"
|
opt.encoding = "utf-8"
|
||||||
opt.swapfile = false
|
opt.swapfile = false
|
||||||
opt.clipboard = "unnamedplus"
|
opt.clipboard = "unnamedplus"
|
||||||
|
@ -43,7 +48,7 @@ vim.g.lsp_path = os.getenv("HOME") .. "/.local/share/nvim/mason/bin/"
|
||||||
vim.g.mapleader = ","
|
vim.g.mapleader = ","
|
||||||
|
|
||||||
opt.list = true
|
opt.list = true
|
||||||
opt.listchars = {tab = '| '}
|
opt.listchars = {multispace = "·", tab = "⬄ "}
|
||||||
|
|
||||||
opt.splitbelow = true
|
opt.splitbelow = true
|
||||||
opt.splitright = true
|
opt.splitright = true
|
||||||
|
|
|
@ -18,19 +18,16 @@ require("lazy").setup({
|
||||||
config = function() require('impatient') end
|
config = function() require('impatient') end
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{"rebelot/kanagawa.nvim",
|
||||||
"neanias/everforest-nvim",
|
|
||||||
config = function()
|
config = function()
|
||||||
vim.cmd.colorscheme "everforest"
|
vim.cmd.colorscheme"kanagawa"
|
||||||
require("everforest").setup()
|
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
{"neanias/everforest-nvim"},
|
||||||
-- { "gbprod/nord.nvim" }
|
-- {"gbprod/nord.nvim"},
|
||||||
{ "rebelot/kanagawa.nvim" },
|
{"catppuccin/nvim"},
|
||||||
-- { "ellisonleao/gruvbox.nvim" }
|
-- { "ellisonleao/gruvbox.nvim" }
|
||||||
-- { "ray-x/aurora" }
|
-- { "ray-x/aurora" }
|
||||||
{"catppuccin/nvim"},
|
|
||||||
-- {"tiagovla/tokyodark.nvim"}
|
-- {"tiagovla/tokyodark.nvim"}
|
||||||
-- {'Everblush/everblush.nvim'}
|
-- {'Everblush/everblush.nvim'}
|
||||||
-- {"frenzyexists/aquarium-vim"}
|
-- {"frenzyexists/aquarium-vim"}
|
||||||
|
@ -59,34 +56,10 @@ require("lazy").setup({
|
||||||
opts = {},
|
opts = {},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{ "lewis6991/gitsigns.nvim", opts = {} },
|
||||||
"lewis6991/gitsigns.nvim",
|
|
||||||
opts = {
|
|
||||||
signs = {
|
|
||||||
add = { text = '+' },
|
|
||||||
change = { text = '~' },
|
|
||||||
delete = { text = '_' },
|
|
||||||
topdelete = { text = '‾' },
|
|
||||||
changedelete = { text = '~' },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
{ "windwp/nvim-autopairs", opts = {} },
|
{ "windwp/nvim-autopairs", opts = {} },
|
||||||
|
|
||||||
-- {
|
|
||||||
-- "lukas-reineke/indent-blankline.nvim",
|
|
||||||
-- main = "ibl",
|
|
||||||
-- opts = {
|
|
||||||
-- -- indent = { highlight = {"CursorColumn", "Whitespace"}},
|
|
||||||
-- -- whitespace = {
|
|
||||||
-- -- highlight = highlight,
|
|
||||||
-- -- remove_blankline_trail = false,
|
|
||||||
-- -- },
|
|
||||||
-- -- scope = { enabled = false },
|
|
||||||
-- }
|
|
||||||
-- },
|
|
||||||
|
|
||||||
{
|
{
|
||||||
"numToStr/Comment.nvim",
|
"numToStr/Comment.nvim",
|
||||||
opts = {}
|
opts = {}
|
||||||
|
@ -157,36 +130,22 @@ require("lazy").setup({
|
||||||
preset = 'codicons',
|
preset = 'codicons',
|
||||||
|
|
||||||
symbol_map = {
|
symbol_map = {
|
||||||
Text = "",
|
Text = " ", Method = " ", Function = " ", Constructor = " ", Field = " ",
|
||||||
Method = "",
|
Variable = " ", Class = " ", Interface = " ", Module = " ", Property = " ",
|
||||||
Function = "",
|
Unit = " ", Value = " ", Enum = " ", Keyword = " ", Snippet = " ",
|
||||||
Constructor = "",
|
Color = " ", File = " ", Reference = "", Folder = "", EnumMember = " ",
|
||||||
Field = "",
|
Constant = " ", Struct = " ", Event = " ", Operator = " ", TypeParameter = " ",
|
||||||
Variable = "",
|
}
|
||||||
Class = "",
|
|
||||||
Interface = "",
|
|
||||||
Module = "",
|
|
||||||
Property = "",
|
|
||||||
Unit = "",
|
|
||||||
Value = "",
|
|
||||||
Enum = "",
|
|
||||||
Keyword = "",
|
|
||||||
Snippet = "",
|
|
||||||
Color = "",
|
|
||||||
File = "",
|
|
||||||
Reference = "",
|
|
||||||
Folder = "",
|
|
||||||
EnumMember = "",
|
|
||||||
Constant = "",
|
|
||||||
Struct = "",
|
|
||||||
Event = "",
|
|
||||||
Operator = "",
|
|
||||||
TypeParameter = "",
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'akinsho/toggleterm.nvim',
|
||||||
|
version = "*",
|
||||||
|
config = true
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"folke/which-key.nvim",
|
"folke/which-key.nvim",
|
||||||
opts = {}, lazy = true,
|
opts = {}, lazy = true,
|
||||||
|
@ -197,6 +156,16 @@ require("lazy").setup({
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'quarto-dev/quarto-nvim',
|
||||||
|
'jmbuhr/otter.nvim',
|
||||||
|
config = function()
|
||||||
|
local quarto = require"quarto"
|
||||||
|
quarto.setup()
|
||||||
|
vim.keymap.set('n', '<leader>pq', quarto.quartoPreview, { silent = true, noremap = true })
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"L3MON4D3/LuaSnip",
|
"L3MON4D3/LuaSnip",
|
||||||
dependencies = {"rafamadriz/friendly-snippets"},
|
dependencies = {"rafamadriz/friendly-snippets"},
|
||||||
|
|
|
@ -1 +1,48 @@
|
||||||
|
Statusline = {}
|
||||||
|
local modes = {
|
||||||
|
["n"] = "NORMAL",
|
||||||
|
["no"] = "NORMAL",
|
||||||
|
["v"] = "VISUAL",
|
||||||
|
["V"] = "VISUAL LINE",
|
||||||
|
[""] = "VISUAL BLOCK",
|
||||||
|
["s"] = "SELECT",
|
||||||
|
["S"] = "SELECT LINE",
|
||||||
|
[""] = "SELECT BLOCK",
|
||||||
|
["i"] = "INSERT",
|
||||||
|
["ic"] = "INSERT",
|
||||||
|
["R"] = "REPLACE",
|
||||||
|
["Rv"] = "VISUAL REPLACE",
|
||||||
|
["c"] = "COMMAND",
|
||||||
|
["cv"] = "VIM EX",
|
||||||
|
["ce"] = "EX",
|
||||||
|
["r"] = "PROMPT",
|
||||||
|
["rm"] = "MOAR",
|
||||||
|
["r?"] = "CONFIRM",
|
||||||
|
["!"] = "SHELL",
|
||||||
|
["t"] = "TERMINAL",
|
||||||
|
}
|
||||||
|
|
||||||
|
local function mode()
|
||||||
|
local current_mode = vim.api.nvim_get_mode().mode
|
||||||
|
return string.format(" %s ", modes[current_mode]):upper()
|
||||||
|
end
|
||||||
|
|
||||||
|
local function filepath()
|
||||||
|
local fpath = vim.fn.fnamemodify(vim.fn.expand "%", ":~:.:h")
|
||||||
|
if fpath == "" or fpath == "." then
|
||||||
|
return " "
|
||||||
|
end
|
||||||
|
|
||||||
|
return string.format(" %%<%s/", fpath)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function filename()
|
||||||
|
local fname = vim.fn.expand "%:t"
|
||||||
|
if fname == "" then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
return fname .. " "
|
||||||
|
end
|
||||||
|
|
||||||
|
statusline = mode() .. " " .. "%F"
|
||||||
|
return statusline
|
||||||
|
|
|
@ -52,6 +52,7 @@ vim.g.lsp_on_attach = function(client, bufnr)
|
||||||
end
|
end
|
||||||
|
|
||||||
nmap('gd', vim.lsp.buf.definition, "[G]oto [D]efinition")
|
nmap('gd', vim.lsp.buf.definition, "[G]oto [D]efinition")
|
||||||
|
nmap("<leader>f", vim.lsp.buf.format(), "Format current buffer")
|
||||||
nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
|
nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
|
||||||
nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation')
|
nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation')
|
||||||
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
|
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
|
||||||
|
|
|
@ -8,6 +8,7 @@ return {
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
pylsp = {
|
pylsp = {
|
||||||
|
|
||||||
plugins = {
|
plugins = {
|
||||||
pycodestyle = {
|
pycodestyle = {
|
||||||
ignore = {'W391','W293',"E128","E124"},
|
ignore = {'W391','W293',"E128","E124"},
|
||||||
|
|
|
@ -10,10 +10,10 @@ keymap("n", "<F5>", dap.continue)
|
||||||
keymap("n", "<F10>", dap.step_over)
|
keymap("n", "<F10>", dap.step_over)
|
||||||
keymap("n", "<F11>", dap.step_into)
|
keymap("n", "<F11>", dap.step_into)
|
||||||
keymap("n", "<F12>", dap.step_out)
|
keymap("n", "<F12>", dap.step_out)
|
||||||
keymap("n", "<leader>b", dap.toggle_breakpoint)
|
-- keymap("n", "<leader>b", dap.toggle_breakpoint)
|
||||||
keymap("n", "<leader>B", function()
|
-- keymap("n", "<leader>B", function()
|
||||||
dap.set_breakpoint{vim.fn.input("Breakpoint condition: ")}
|
-- dap.set_breakpoint{vim.fn.input("Breakpoint condition: ")}
|
||||||
end)
|
-- end)
|
||||||
keymap("n", "<leader>lp", function()
|
keymap("n", "<leader>lp", function()
|
||||||
dap.set_breakpoint{nil, nil, vim.fn.input('Log point message: ')}
|
dap.set_breakpoint{nil, nil, vim.fn.input('Log point message: ')}
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -21,12 +21,37 @@ nvim_treesitter_configs.setup {
|
||||||
lookahead = true,
|
lookahead = true,
|
||||||
keymaps = {
|
keymaps = {
|
||||||
-- You can use the capture groups defined in textobjects.scm
|
-- You can use the capture groups defined in textobjects.scm
|
||||||
['aa'] = '@parameter.outer',
|
["a="] = { query = "@assignment.outer", desc = "Select outer part of an assignment" },
|
||||||
['ia'] = '@parameter.inner',
|
["i="] = { query = "@assignment.inner", desc = "Select inner part of an assignment" },
|
||||||
['af'] = '@function.outer',
|
["l="] = { query = "@assignment.lhs", desc = "Select left hand side of an assignment" },
|
||||||
['if'] = '@function.inner',
|
["r="] = { query = "@assignment.rhs", desc = "Select right hand side of an assignment" },
|
||||||
['ac'] = '@class.outer',
|
|
||||||
['ic'] = '@class.inner',
|
-- works for javascript/typescript files (custom captures 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" },
|
||||||
|
|
||||||
|
["a/"] = { query = "@comment.outer", desc = "Select outer part of a comment" },
|
||||||
|
["i/"] = { query = "@comment.inner", desc = "Select inner part of a comment" },
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
move = {
|
move = {
|
||||||
|
@ -51,17 +76,7 @@ nvim_treesitter_configs.setup {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
ensure_installed = {
|
ensure_installed = {"lua","go","python","html","css","javascript","c","cpp","fish"},
|
||||||
"lua",
|
|
||||||
"fish",
|
|
||||||
"python",
|
|
||||||
"go",
|
|
||||||
"javascript",
|
|
||||||
"css",
|
|
||||||
"html",
|
|
||||||
"c",
|
|
||||||
"cpp"
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
local parser_config = require "nvim-treesitter.parsers".get_parser_configs()
|
local parser_config = require "nvim-treesitter.parsers".get_parser_configs()
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
"layer": "top", // Waybar at top layer
|
"layer": "top", // Waybar at top layer
|
||||||
"position": "top",
|
"position": "top",
|
||||||
|
|
||||||
"height": 39,
|
"height": 47,
|
||||||
"width": 1895,
|
"width": 1895,
|
||||||
"spacing": 3,
|
"spacing": 5,
|
||||||
|
|
||||||
"modules-left": ["hyprland/window", "pulseaudio","tray"],
|
"modules-left": ["hyprland/window", "pulseaudio","tray"],
|
||||||
"modules-center": ["hyprland/workspaces"],
|
"modules-center": ["hyprland/workspaces"],
|
||||||
|
|
|
@ -42,7 +42,7 @@ get_icon() {
|
||||||
}
|
}
|
||||||
|
|
||||||
KEY="e434b5435a979de6e155570590bee89b"
|
KEY="e434b5435a979de6e155570590bee89b"
|
||||||
CITY="Novosibirsk"
|
CITY="Yuzhnoukrainsk"
|
||||||
UNITS="metric"
|
UNITS="metric"
|
||||||
SYMBOL="°"
|
SYMBOL="°"
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
* {
|
* {
|
||||||
/* `otf-font-awesome` is required to be installed for icons */
|
/* `otf-font-awesome` is required to be installed for icons */
|
||||||
font-family: FontAwesome, JetBrainsMono, sans-serif;
|
font-family: FontAwesome, JetBrainsMono, sans-serif;
|
||||||
font-size: 13px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@import "./colors.css";
|
@import "./colors.css";
|
||||||
|
@ -15,11 +15,11 @@ window#waybar {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modules-left > widget:first-child > #workspaces {
|
.modules-left>widget:first-child>#workspaces {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modules-right > widget:last-child > #workspaces {
|
.modules-right>widget:last-child>#workspaces {
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,11 +87,11 @@ button:focus {
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tray > .passive {
|
#tray>.passive {
|
||||||
-gtk-icon-effect: dim;
|
-gtk-icon-effect: dim;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tray > .needs-attention {
|
#tray>.needs-attention {
|
||||||
-gtk-icon-effect: highlight;
|
-gtk-icon-effect: highlight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +173,8 @@ label:focus {
|
||||||
background: @bg;
|
background: @bg;
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery.charging, #battery.plugged {
|
#battery.charging,
|
||||||
|
#battery.plugged {
|
||||||
color: @green;
|
color: @green;
|
||||||
background-color: @bg;
|
background-color: @bg;
|
||||||
}
|
}
|
||||||
|
|
After Width: | Height: | Size: 9.5 MiB |
After Width: | Height: | Size: 14 MiB |
After Width: | Height: | Size: 4.7 MiB |
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 7.6 MiB |
After Width: | Height: | Size: 5.6 MiB |
After Width: | Height: | Size: 15 MiB |
After Width: | Height: | Size: 10 MiB |
After Width: | Height: | Size: 809 KiB |
After Width: | Height: | Size: 7.4 MiB |
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 11 MiB |
After Width: | Height: | Size: 4.8 MiB |
After Width: | Height: | Size: 5.9 MiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 2.3 MiB |
After Width: | Height: | Size: 395 KiB |
After Width: | Height: | Size: 388 KiB |
After Width: | Height: | Size: 414 KiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 790 KiB |
After Width: | Height: | Size: 932 KiB |
After Width: | Height: | Size: 5.9 MiB |
After Width: | Height: | Size: 1.9 MiB |
After Width: | Height: | Size: 2.5 MiB |
After Width: | Height: | Size: 171 KiB |
Before Width: | Height: | Size: 210 KiB |
Before Width: | Height: | Size: 316 KiB |
After Width: | Height: | Size: 2.5 MiB |
After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 718 KiB |
After Width: | Height: | Size: 1.7 MiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 486 KiB |
After Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 2.7 MiB |
After Width: | Height: | Size: 5.3 MiB |
After Width: | Height: | Size: 6.6 MiB |
After Width: | Height: | Size: 442 KiB |
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 4.0 MiB |
After Width: | Height: | Size: 4.7 MiB |
After Width: | Height: | Size: 6.7 MiB |
After Width: | Height: | Size: 3.1 MiB |
After Width: | Height: | Size: 7.2 MiB |
After Width: | Height: | Size: 2.0 MiB |
After Width: | Height: | Size: 6.2 MiB |
After Width: | Height: | Size: 237 KiB |
After Width: | Height: | Size: 4.0 MiB |
After Width: | Height: | Size: 3.4 MiB |
After Width: | Height: | Size: 292 KiB |
After Width: | Height: | Size: 505 KiB |
After Width: | Height: | Size: 4.4 MiB |