diff --git a/.config/fish/completions/fzf_configure_bindings.fish b/.config/fish/completions/fzf_configure_bindings.fish new file mode 100644 index 0000000..b38ef92 --- /dev/null +++ b/.config/fish/completions/fzf_configure_bindings.fish @@ -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" diff --git a/.config/fish/conf.d/fzf.fish b/.config/fish/conf.d/fzf.fish new file mode 100644 index 0000000..446dd3c --- /dev/null +++ b/.config/fish/conf.d/fzf.fish @@ -0,0 +1,27 @@ +# 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 diff --git a/.config/fish/fish_plugins b/.config/fish/fish_plugins new file mode 100644 index 0000000..3638fbb --- /dev/null +++ b/.config/fish/fish_plugins @@ -0,0 +1 @@ +patrickf1/fzf.fish diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables index d0e4f3a..f6b1d81 100644 --- a/.config/fish/fish_variables +++ b/.config/fish/fish_variables @@ -3,6 +3,10 @@ SETUVAR __done_min_cmd_duration:10000 SETUVAR __done_notification_urgency_level:low SETUVAR __fish_initialized:4300 +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:patrickf1/fzf\x2efish +SETUVAR _fisher_upgraded_to_4_4:\x1d +SETUVAR fish_user_paths:/home/arindy/\x2elocal/bin SETUVAR pure_begin_prompt_with_current_directory:true SETUVAR pure_check_for_new_release:false SETUVAR pure_color_at_sign:pure_color_mute diff --git a/.config/fish/functions/_fzf_configure_bindings_help.fish b/.config/fish/functions/_fzf_configure_bindings_help.fish new file mode 100644 index 0000000..c4df8cd --- /dev/null +++ b/.config/fish/functions/_fzf_configure_bindings_help.fish @@ -0,0 +1,44 @@ +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 using fish's key name syntax (e.g. ctrl-f, ctrl-alt-v). 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=ctrl-f --variables=ctrl-alt-v + Default bindings but disable Search History + \$ fzf_configure_bindings --history= + An agglomeration of different options + \$ fzf_configure_bindings --git_status=ctrl-g --history=ctrl-h --variables= --processes= + +SEE Also + To learn more about fish key bindings, see bind(1) and fish_key_reader(1). +" +end diff --git a/.config/fish/functions/_fzf_extract_var_info.fish b/.config/fish/functions/_fzf_extract_var_info.fish new file mode 100644 index 0000000..34a4b44 --- /dev/null +++ b/.config/fish/functions/_fzf_extract_var_info.fish @@ -0,0 +1,13 @@ +# 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 diff --git a/.config/fish/functions/_fzf_preview_changed_file.fish b/.config/fish/functions/_fzf_preview_changed_file.fish new file mode 100644 index 0000000..78dd561 --- /dev/null +++ b/.config/fish/functions/_fzf_preview_changed_file.fish @@ -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 diff --git a/.config/fish/functions/_fzf_preview_file.fish b/.config/fish/functions/_fzf_preview_file.fish new file mode 100644 index 0000000..c926475 --- /dev/null +++ b/.config/fish/functions/_fzf_preview_file.fish @@ -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 diff --git a/.config/fish/functions/_fzf_report_diff_type.fish b/.config/fish/functions/_fzf_report_diff_type.fish new file mode 100644 index 0000000..cc26fb3 --- /dev/null +++ b/.config/fish/functions/_fzf_report_diff_type.fish @@ -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 diff --git a/.config/fish/functions/_fzf_report_file_type.fish b/.config/fish/functions/_fzf_report_file_type.fish new file mode 100644 index 0000000..49e02e1 --- /dev/null +++ b/.config/fish/functions/_fzf_report_file_type.fish @@ -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 diff --git a/.config/fish/functions/_fzf_search_directory.fish b/.config/fish/functions/_fzf_search_directory.fish new file mode 100644 index 0000000..b00c34a --- /dev/null +++ b/.config/fish/functions/_fzf_search_directory.fish @@ -0,0 +1,32 @@ +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 diff --git a/.config/fish/functions/_fzf_search_git_log.fish b/.config/fish/functions/_fzf_search_git_log.fish new file mode 100644 index 0000000..aa54724 --- /dev/null +++ b/.config/fish/functions/_fzf_search_git_log.fish @@ -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 diff --git a/.config/fish/functions/_fzf_search_git_status.fish b/.config/fish/functions/_fzf_search_git_status.fish new file mode 100644 index 0000000..358f88c --- /dev/null +++ b/.config/fish/functions/_fzf_search_git_status.fish @@ -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 diff --git a/.config/fish/functions/_fzf_search_history.fish b/.config/fish/functions/_fzf_search_history.fish new file mode 100644 index 0000000..cafbce9 --- /dev/null +++ b/.config/fish/functions/_fzf_search_history.fish @@ -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 diff --git a/.config/fish/functions/_fzf_search_processes.fish b/.config/fish/functions/_fzf_search_processes.fish new file mode 100644 index 0000000..133a880 --- /dev/null +++ b/.config/fish/functions/_fzf_search_processes.fish @@ -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 diff --git a/.config/fish/functions/_fzf_search_variables.fish b/.config/fish/functions/_fzf_search_variables.fish new file mode 100644 index 0000000..52a7c70 --- /dev/null +++ b/.config/fish/functions/_fzf_search_variables.fish @@ -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 diff --git a/.config/fish/functions/_fzf_wrapper.fish b/.config/fish/functions/_fzf_wrapper.fish new file mode 100644 index 0000000..486e36c --- /dev/null +++ b/.config/fish/functions/_fzf_wrapper.fish @@ -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 diff --git a/.config/fish/functions/anime.fish b/.config/fish/functions/anime.fish new file mode 100644 index 0000000..5664ebb --- /dev/null +++ b/.config/fish/functions/anime.fish @@ -0,0 +1,3 @@ +function anime + ~/.local/bin/anime --rofi --dub $argv +end diff --git a/.config/fish/functions/fzf_configure_bindings.fish b/.config/fish/functions/fzf_configure_bindings.fish new file mode 100644 index 0000000..fa7a6b5 --- /dev/null +++ b/.config/fish/functions/fzf_configure_bindings.fish @@ -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 ctrl-alt-f ctrl-alt-l ctrl-alt-s ctrl-r ctrl-alt-p ctrl-v + 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 diff --git a/.config/hypr/conf/autostart.lua b/.config/hypr/conf/autostart.lua index 332efe4..3fa0cc3 100644 --- a/.config/hypr/conf/autostart.lua +++ b/.config/hypr/conf/autostart.lua @@ -13,10 +13,14 @@ hl.on("hyprland.start", function() hl.exec_cmd('gsettings set org.gnome.desktop.interface cursor-theme "Volantes Cursors"') hl.exec_cmd('gsettings set org.gnome.desktop.interface font-name "Fira Sans Semi-Bold 11"') hl.exec_cmd('"gsettings set org.gnome.desktop.interface color-scheme "prefer_dark"') + hl.exec_cmd('hyprctl setcursor "Volantes Cursors"') hl.exec_cmd("systemctl --user start hyprpolkitagent") + hl.exec_cmd("snappy-switcher --daemon &") + hl.exec_cmd("ibus start --type wayland &") hl.exec_cmd("hyprpaper &") hl.exec_cmd("waybar &") hl.exec_cmd("dunst &") - hl.exec_cmd("discord &") + hl.exec_cmd("vesktop &") + hl.exec_cmd("Applications/scriptlauncher-linux-1.9.0_aaee5214782c168936494cc4997ef7ca.AppImage &") end) diff --git a/.config/hypr/conf/env.lua b/.config/hypr/conf/env.lua index fa02506..dcd720a 100644 --- a/.config/hypr/conf/env.lua +++ b/.config/hypr/conf/env.lua @@ -20,8 +20,15 @@ hl.env("QT_AUTO_SCREEN_SCALE_FACTOR", "1") -- GTK hl.env("GDK_SCALE", "1") + +hl.env("GTK_IM_MODULE", "wayland") +hl.env("XMODIFIERS", "@im=ibus") +hl.env("QT_IM_MODULES", "wayland;ibus") +hl.env("QT_IM_MODULE", "ibus") + hl.env("XCURSOR_SIZE", "20") hl.env("HYPRCURSOR_SIZE", "20") +hl.env("HYPRCURSOR_THEME", "Volantes Cursors") -- Mozilla hl.env("MOZ_ENABLE_WAYLAND", "1") diff --git a/.config/hypr/conf/input.lua b/.config/hypr/conf/input.lua index d97e066..2a5762b 100644 --- a/.config/hypr/conf/input.lua +++ b/.config/hypr/conf/input.lua @@ -23,6 +23,9 @@ hl.config({ touchpad = { natural_scroll = false, }, + tablet = { + output = BOTTOM_MONITOR + } }, -- See https://wiki.hypr.land/Configuring/Gestures }) diff --git a/.config/hypr/conf/keybinds.lua b/.config/hypr/conf/keybinds.lua index 276bca8..d04432d 100644 --- a/.config/hypr/conf/keybinds.lua +++ b/.config/hypr/conf/keybinds.lua @@ -8,7 +8,6 @@ local mainMod = "SUPER" -- Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more - -- KeyBinds -- Open hl.bind(mainMod .. " + T", hl.dsp.exec_cmd(TERMINAL, {float = true, size = {1920, 1080}})) -- Open Terminal @@ -21,13 +20,20 @@ hl.bind(mainMod .. " + C", hl.dsp.window.close()) -- Close Window hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" })) -- Toggle Float hl.bind(mainMod .. " + P", hl.dsp.window.pseudo()) -- Toggle Pseudo hl.bind(mainMod .. " + F11", hl.dsp.window.fullscreen("")) -- Toggle Fullscreen -hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit")) -- Toggle Split +hl.bind(mainMod .. " + SHIFT + F11", hl.dsp.window.float({action = "toggle"})) -- Toggle Fullscreen +hl.bind(mainMod .. " + SHIFT + F11", hl.dsp.window.resize({x = 2560*3, y = 1440})) -- Toggle Fullscreen +hl.bind(mainMod .. " + SHIFT + F11", hl.dsp.window.move({x = 0, y = 0})) -- Toggle Fullscreen +hl.bind(mainMod .. " + H", hl.dsp.layout("togglesplit")) -- Toggle Split hl.bind(mainMod .. " + left", hl.dsp.focus({ direction = "left" })) -- Focus Left hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "right" })) -- Focus Right hl.bind(mainMod .. " + up", hl.dsp.focus({ direction = "up" })) -- Focus Up hl.bind(mainMod .. " + down", hl.dsp.focus({ direction = "down" })) -- Focus Down +hl.bind(mainMod .. " + TAB", hl.dsp.window.cycle_next({floating = true, tiled = true, next = true})) +hl.bind("ALT + TAB", hl.dsp.exec_cmd("snappy-switcher next")) +hl.bind("ALT + SHIFT + TAB", hl.dsp.exec_cmd("snappy-switcher prev")) + hl.bind(mainMod .. " + SHIFT + left", hl.dsp.window.move({ workspace = "e+1" })) -- Move Left hl.bind(mainMod .. " + SHIFT + right", hl.dsp.window.move({ workspace = "e-1" })) -- Move Right hl.bind(mainMod .. " + SHIFT + up", hl.dsp.window.move({ workspace = 2 })) -- Move Up @@ -42,6 +48,11 @@ hl.bind("ALT + mouse:272", hl.dsp.window.drag()) -- Move with Mouse hl.bind("ALT + mouse:273", hl.dsp.window.resize()) -- Resize with Mouse -- Workspaces +hl.bind(mainMod .. " + J", hl.dsp.focus({ workspace = "name:" })) -- Focus left Workspace +hl.bind(mainMod .. " + K", hl.dsp.focus({ workspace = "name:" })) -- Focus bottom Workspace +hl.bind(mainMod .. " + CTRL + K", hl.dsp.focus({ workspace = "name:[]" })) -- Focus [bottom] Workspace +hl.bind(mainMod .. " + L", hl.dsp.focus({ workspace = "name:" })) -- Focus right Workspace +hl.bind(mainMod .. " + I", hl.dsp.focus({ workspace = "name:" })) -- Focus top Workspace hl.bind(mainMod .. " + 1", hl.dsp.focus({ workspace = 1 })) -- Focus Workspace 1 hl.bind(mainMod .. " + 2", hl.dsp.focus({ workspace = 2 })) -- Focus Workspace 2 hl.bind(mainMod .. " + 3", hl.dsp.focus({ workspace = 3 })) -- Focus Workspace 3 @@ -53,6 +64,13 @@ hl.bind(mainMod .. " + 8", hl.dsp.focus({ workspace = 8 })) -- Focus Workspace 8 hl.bind(mainMod .. " + 9", hl.dsp.focus({ workspace = 9 })) -- Focus Workspace 9 hl.bind(mainMod .. " + 0", hl.dsp.focus({ workspace = 10 })) -- Focus Workspace 10 + +hl.bind(mainMod .. " + SHIFT + J", hl.dsp.window.move({ workspace = "name:" })) -- Focus left Workspace +hl.bind(mainMod .. " + SHIFT + K", hl.dsp.window.move({ workspace = "name:" })) -- Focus bottom Workspace +hl.bind(mainMod .. " + SHIFT + CTRL + K", hl.dsp.window.move({ workspace = "name:[]" })) -- Focus [bottom] Workspace +hl.bind(mainMod .. " + SHIFT + L", hl.dsp.window.move({ workspace = "name:" })) -- Focus right Workspace +hl.bind(mainMod .. " + SHIFT + I", hl.dsp.window.move({ workspace = "name:" })) -- Focus top Workspace + hl.bind(mainMod .. " + SHIFT + 1", hl.dsp.window.move({ workspace = 1 })) -- Move to Workspace 1 hl.bind(mainMod .. " + SHIFT + 2", hl.dsp.window.move({ workspace = 2 })) -- Move to Workspace 2 hl.bind(mainMod .. " + SHIFT + 3", hl.dsp.window.move({ workspace = 3 })) -- Move to Workspace 3 @@ -67,6 +85,9 @@ hl.bind(mainMod .. " + SHIFT + 0", hl.dsp.window.move({ workspace = 10 })) -- Mo hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic")) -- Focus Magic Workspace hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" })) -- Move to Magic Workspace +-- Capture +hl.bind(mainMod .. " + F9", hl.dsp.exec_cmd("hyprshot -m region")) +hl.bind(mainMod .. " + SHIFT + F9", hl.dsp.exec_cmd("hyprshot -m window")) -- Media Keys hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd(SCRIPT_DIR .. "/volume up"), { locked = true, repeating = true }) -- Volume Up hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd(SCRIPT_DIR .. "/volume down"), { locked = true, repeating = true }) -- Volume Down @@ -82,4 +103,4 @@ hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true -- System hl.bind(mainMod .. " + F1", hl.dsp.exec_cmd("keybinds")) -- Show Keybinds -hl.bind(mainMod .. " + L", hl.dsp.exec_cmd("hyprlock")) -- Lock the System +hl.bind(mainMod .. " + Escape", hl.dsp.exec_cmd("hyprlock")) -- Lock the System diff --git a/.config/hypr/conf/windows.lua b/.config/hypr/conf/windows.lua index 0faf471..2fabf8d 100644 --- a/.config/hypr/conf/windows.lua +++ b/.config/hypr/conf/windows.lua @@ -35,11 +35,12 @@ hl.window_rule({ }) hl.window_rule({ - name = "discord", + name = "vesktop", match = { - class = "discord", + class = "vesktop", }, monitor = RIGHT_MONITOR, + no_follow_mouse = true }) hl.window_rule({ diff --git a/.config/hypr/conf/workspaces.lua b/.config/hypr/conf/workspaces.lua new file mode 100644 index 0000000..802857c --- /dev/null +++ b/.config/hypr/conf/workspaces.lua @@ -0,0 +1,7 @@ +hl.workspace_rule({ workspace = "name:", monitor = LEFT_MONITOR, default = true }) +hl.workspace_rule({ workspace = "name:", monitor = TOP_MONITOR, default = true}) +hl.workspace_rule({ workspace = "name:", monitor = RIGHT_MONITOR, default = true }) +hl.workspace_rule({ workspace = "name:", monitor = BOTTOM_MONITOR, default = true }) + +hl.workspace_rule({ workspace = "name:[]", monitor = BOTTOM_MONITOR }) +hl.workspace_rule({ workspace = "name:{}", monitor = BOTTOM_MONITOR }) diff --git a/.config/hypr/hyprland.lua b/.config/hypr/hyprland.lua index b8d0bd1..ecdd413 100644 --- a/.config/hypr/hyprland.lua +++ b/.config/hypr/hyprland.lua @@ -22,5 +22,6 @@ require("conf.input") require("conf.keybinds") -- Source: ./conf/style.conf — convert this file to Lua and ensure it is on Lua's package.path. require("conf.style") +require("conf.workspaces") -- Source: ./conf/windows.conf — convert this file to Lua and ensure it is on Lua's package.path. require("conf.windows") diff --git a/.config/hypr/xdph.conf b/.config/hypr/xdph.conf new file mode 100644 index 0000000..6ea7b46 --- /dev/null +++ b/.config/hypr/xdph.conf @@ -0,0 +1,3 @@ +screencopy { + custom_picker_binary = hyprland-preview-share-picker +} diff --git a/.config/millennium/_millennium/cache.json b/.config/millennium/_millennium/cache.json new file mode 100644 index 0000000..400bf59 --- /dev/null +++ b/.config/millennium/_millennium/cache.json @@ -0,0 +1 @@ +{"2295170":{"timestamp":1785748559,"notFound":false,"data":{"searched_name":"Emberville","game_name":"Emberville","game_id":173380}},"1824220":{"notFound":false,"timestamp":1781604313,"data":{"searched_name":"Chivalry 2"}},"3949040":{"timestamp":1776076425,"notFound":false,"data":{"searched_name":"RV There Yet?"}},"2461850":{"notFound":false,"timestamp":1780990220,"data":{"searched_name":"Hellblade II: Senua's Saga"}},"2569760":{"timestamp":1785748572,"notFound":false,"data":{"searched_name":"The Mound: Omen of Cthulhu","game_name":"The Mound: Omen of Cthulhu","game_id":164939}},"2904000":{"notFound":false,"timestamp":1777573278,"data":{"searched_name":"The Spell Brigade"}},"690640":{"notFound":false,"timestamp":1777398554,"data":{"searched_name":"Trine 4: The Nightmare Prince"}},"2001760":{"timestamp":1785748409,"notFound":false,"data":{"searched_name":"Beast of Reincarnation","game_name":"Beast of Reincarnation","game_id":169407}},"2484760":{"notFound":false,"timestamp":1778936136,"data":{"searched_name":"Birdfont"}},"2814990":{"notFound":false,"timestamp":1779202866,"data":{"searched_name":"Screamer"}},"880940":{"timestamp":1783796338,"notFound":false,"data":{"searched_name":"Pummel Party","game_name":"Pummel Party","game_id":63196,"comp_main":7.1,"comp_plus":14.2,"comp_100":22}},"2486820":{"timestamp":1785748700,"notFound":false,"data":{"searched_name":"Sonic Racing: CrossWorlds","game_name":"Sonic Racing: CrossWorlds","game_id":160622,"comp_main":4.5,"comp_plus":17.3,"comp_100":63.9}},"1297900":{"notFound":false,"timestamp":1781547347,"data":{"searched_name":"Gothic 1 Remake"}},"3724100":{"timestamp":1785748607,"notFound":false,"data":{"searched_name":"Luminas: Parasite Reign"}},"2963950":{"timestamp":1785748433,"notFound":false,"data":{"searched_name":"Persona 4 Revival","game_name":"Persona 4 Revival","game_id":169416}},"1086940":{"notFound":false,"timestamp":1779475075,"data":{"searched_name":"Baldur's Gate 3"}},"3840230":{"notFound":false,"timestamp":1777809636,"data":{"searched_name":"Adorable Adventures"}}} \ No newline at end of file diff --git a/.config/millennium/_millennium/config.json b/.config/millennium/_millennium/config.json new file mode 100644 index 0000000..e69a59c --- /dev/null +++ b/.config/millennium/_millennium/config.json @@ -0,0 +1,168 @@ +{ + "general": { + "accentColor": "#117703", + "checkForMillenniumUpdates": true, + "checkForPluginAndThemeUpdates": true, + "injectCSS": true, + "injectJavascript": true, + "millenniumUpdateChannel": "stable", + "onMillenniumUpdate": 1, + "shouldShowThemePluginUpdateNotifications": true + }, + "misc": { + "hasShownWelcomeModal": false + }, + "network": { + "proxy": "", + "proxyPassword": "", + "proxyUsername": "" + }, + "notifications": { + "showNotifications": true, + "showPluginNotifications": true, + "showUpdateNotifications": true + }, + "plugins": { + "enabledPlugins": [ + "size-on-disk" + ] + }, + "themes": { + "activeTheme": "Minimal-Dark-for-Steam", + "allowedScripts": true, + "allowedStyles": true, + "conditions": { + "Minimal-Dark-for-Steam": { + "Account wallet :": "Hide", + "Alignment fix for 4K resolution :": "no", + "Alt underlining :": "Default (thin line)", + "Alternate view of in-game friends :": "Alternative", + "Alternative UI color for context menus/menus :": "no", + "Alternative UI for new Steam menu :": "Minimal new UI (compact)", + "Alternative border color for context menus :": "Black", + "Alternative color update :": "Default", + "Alternative contacts icon :": "Minimal Dark #3 (fill)", + "Alternative downloads UI :": "New UI (alt)", + "Alternative game names hover effect :": "Default", + "Alternative games names hover effect :": "Default", + "Alternative hover effect :": "Default", + "Alternative ingame friends indicator :": "Minimal Dark default", + "Alternative library navigation button :": "Alternative", + "Alternative root menu icon :": "Minimal Dark", + "Alternative topbar color :": "Grey/dark", + "Alternative ui color for context menus/menus :": "no", + "Alternative view for back to top button :": "no", + "Alternative view for scrolling bloc :": "no", + "Always show game infos :": "no", + "Animated buttons hovering :": "yes", + "Animated hovering :": "yes", + "Animated mouseover :": "yes", + "Avatar frame :": "Show", + "Avatar size :": "Default", + "Avatar status border :": "Reduce", + "Bigger buttons :": "no", + "Bigger font size :": "no", + "Bigger gamepage/library buttons :": "no", + "Bigger header :": "Full image only when maximized", + "Bigger notification button :": "no", + "Bigger top bloc padding :": "no", + "Blocs backgrounds :": "Blurred", + "Blurred background :": "Blurred", + "Bolder names :": "no", + "Borders profiles :": "no", + "Carousel arrows borders :": "yes", + "Change UI font :": "Default", + "Community content :": "Show", + "Compact Webkit :": "Hide", + "Compact avatar :": "Compact", + "Compact collections :": "no", + "Compact filters :": "yes", + "Compact gamepage :": "no", + "Compact labels (library + whats news) :": "Compact", + "Compact library :": "yes", + "Compact menus/context menus :": "Compact size (static with left border)", + "Compact mod :": "Default", + "Compact news container :": "Ultra compact", + "Context menus left icons :": "User color icons (small/fill)", + "Corners radius :": "Rounded", + "Default pointers :": "Minimal Dark", + "Download icon on uninstalled games :": "Show", + "Downloads progress bar color :": "no", + "Dropdown stream/play button :": "no", + "Events background :": "Default background", + "Events header :": "Minimal Dark default", + "Font size :": "Smaller", + "Friends conversation tabs header glow :": "Default", + "Friends list header glow :": "no", + "Gamepage/library buttons svg color (Play/Install) :": "White", + "Games names overflow :": "yes", + "Group chats position :": "Default (bottom)", + "Header (compact mod) :": "Show", + "Header size adjustment :": "Yes", + "Hide '+ Add a Showcase' :": "no", + "Hide 'post-party summary' / 'WYRTG ?' :": "Show all", + "Hide VAC ban information on profiles :": "no", + "Hide all activities :": "Show all activities", + "Hide category names :": "no", + "Hide footer (fix) :": "yes", + "Hide footer :": "yes", + "Hide footers :": "Hide", + "Hide scrollbars :": "Hide", + "Hide shelf :": "no", + "Hide success date :": "no", + "Hide topbar elements :": "Show all", + "Hide topbar tabs :": "Show all", + "Hide voice chat :": "no", + "Hours played :": "Show", + "Hover borders on library and webkit blocks :": "Full borders", + "Hover/active borders :": "yes", + "Installed/selected games color :": "Minimal Dark", + "Inverted contact bloc :": "no", + "Inverted contact block :": "no", + "Inverted gamepage (known bugs) :": "Default", + "Labels color for completed games :": "Minimal", + "Larger font (fix) :": "yes", + "Larger font :": "Default size", + "Library games hover glow color :": "Default", + "Library labels :": "Show", + "Longer tabs :": "no", + "Miniprofile background :": "Hide", + "Mouseover animation of settings menu tabs :": "Animated", + "News container :": "Show", + "No button labels in list mod :": "yes", + "No button labels in normal mod :": "no", + "No left images :": "no", + "No titlebar (Linux) :": "no", + "Offline friends :": "Show", + "Persistent Sidebar :": "yes", + "Pointer fix :": "no", + "Profiles :": "Minimal Dark", + "Profiles headers :": "Minimal default", + "Pure black color (OLED) :": "no", + "Resize grip (Steam windows) :": "Default (smaller)", + "Resize width :": "Fixed position", + "Right Sidebar :": "Left", + "Root menu Steam text :": "Hide", + "Show sidebar on mouseover :": "Default", + "Solid background color profiles :": "Default", + "Static hovering (paysage games of Recent Games | Play Next) :": "Animated", + "Static hovering (portrait games of Library | Collections) :": "Static", + "Steam bigpicture button :": "Hide", + "Steam news button :": "Hide", + "Tabs text transform :": "no", + "Text on play/download button :": "no", + "Title area buttons :": "Enlarged (w11 users)", + "Topbar Store tab left icon (currency icon) :": "Fill icon (euro)", + "Topbar icons menu hover effect :": "Fill", + "Topbar tabs left icons (hover effect included) :": "Icons active (fill + text)", + "Topbar tabs left icons, no text :": "no", + "URL bar :": "Visible", + "Uninstalled selected games color :": "Minimal Dark", + "Vanilla topbar style :": "Minimal Dark", + "Windows 10 fix corners :": "no", + "Windows corners fix :": "yes", + "Wishlist new Steam menu :": "Compact revisited menu" + } + } + } +} \ No newline at end of file diff --git a/.config/millennium/_millennium/quick.css b/.config/millennium/_millennium/quick.css new file mode 100644 index 0000000..b5430e1 --- /dev/null +++ b/.config/millennium/_millennium/quick.css @@ -0,0 +1 @@ +/* Quick CSS file created by Millennium */ diff --git a/.config/millennium/config.json b/.config/millennium/config.json index 222d86c..b099041 100644 --- a/.config/millennium/config.json +++ b/.config/millennium/config.json @@ -1,6 +1,6 @@ { "general": { - "accentColor": "#117703", + "accentColor": "DEFAULT_ACCENT_COLOR", "checkForMillenniumUpdates": true, "checkForPluginAndThemeUpdates": true, "injectCSS": true, @@ -10,41 +10,43 @@ "shouldShowThemePluginUpdateNotifications": true }, "misc": { - "hasShownWelcomeModal": true + "hasShownWelcomeModal": false + }, + "network": { + "proxy": "", + "proxyPassword": "", + "proxyUsername": "" }, "notifications": { "showNotifications": true, "showPluginNotifications": true, "showUpdateNotifications": true }, - "plugins": { - "enabledPlugins": [ - "extendium", - "hltb-for-millennium", - "size-on-disk" - ] - }, "themes": { - "activeTheme": "Minimal-Dark-for-Steam", + "activeTheme": "default", "allowedScripts": true, "allowedStyles": true, "conditions": { "Minimal-Dark-for-Steam": { "Account wallet :": "Hide", "Alignment fix for 4K resolution :": "no", + "Alt underlining :": "Default (thin line)", "Alternate view of in-game friends :": "Alternative", + "Alternative UI color for context menus/menus :": "no", "Alternative UI for new Steam menu :": "Minimal new UI (compact)", + "Alternative border color for context menus :": "Black", + "Alternative color update :": "Default", "Alternative contacts icon :": "Minimal Dark #3 (fill)", "Alternative downloads UI :": "New UI (alt)", - "Alternative games names hover effect :": "Default", + "Alternative game names hover effect :": "Default", "Alternative hover effect :": "Default", "Alternative ingame friends indicator :": "Minimal Dark default", "Alternative library navigation button :": "Alternative", "Alternative root menu icon :": "Minimal Dark", "Alternative topbar color :": "Grey/dark", - "Alternative ui color for context menus/menus :": "no", "Alternative view for back to top button :": "no", "Alternative view for scrolling bloc :": "no", + "Always show game infos :": "no", "Animated buttons hovering :": "yes", "Animated hovering :": "yes", "Animated mouseover :": "yes", @@ -54,24 +56,32 @@ "Bigger buttons :": "no", "Bigger font size :": "no", "Bigger gamepage/library buttons :": "no", - "Bigger header :": "Full image", + "Bigger header :": "Full image only when maximized", "Bigger notification button :": "no", + "Bigger top bloc padding :": "no", "Blocs backgrounds :": "Blurred", "Blurred background :": "Blurred", "Bolder names :": "no", + "Borders profiles :": "no", + "Carousel arrows borders :": "yes", "Change UI font :": "Default", - "Community content :": "Show", + "Community content :": "Hide", "Compact Webkit :": "Hide", "Compact avatar :": "Compact", "Compact collections :": "no", "Compact filters :": "yes", + "Compact gamepage :": "no", "Compact labels (library + whats news) :": "Compact", "Compact library :": "yes", "Compact menus/context menus :": "Compact size (static with left border)", "Compact mod :": "Default", "Compact news container :": "Ultra compact", + "Context menus left icons :": "User color icons (small/fill)", "Corners radius :": "Rounded", "Default pointers :": "Minimal Dark", + "Download icon on uninstalled games :": "Show", + "Downloads progress bar color :": "no", + "Dropdown stream/play button :": "no", "Events background :": "Default background", "Events header :": "Minimal Dark default", "Font size :": "Smaller", @@ -86,21 +96,28 @@ "Hide 'post-party summary' / 'WYRTG ?' :": "Show all", "Hide VAC ban information on profiles :": "no", "Hide all activities :": "Show all activities", + "Hide category names :": "no", "Hide footer (fix) :": "yes", "Hide footer :": "yes", "Hide footers :": "Hide", - "Hide scrollbars :": "Hide", + "Hide scrollbars :": "Show", "Hide shelf :": "no", + "Hide success date :": "no", "Hide topbar elements :": "Show all", + "Hide topbar tabs :": "Show all", "Hide voice chat :": "no", "Hours played :": "Show", "Hover borders on library and webkit blocks :": "Full borders", "Hover/active borders :": "yes", "Installed/selected games color :": "Minimal Dark", - "Inverted contact bloc :": "no", + "Inverted contact block :": "no", "Inverted gamepage (known bugs) :": "Default", + "Labels color for completed games :": "Minimal", + "Larger font (fix) :": "yes", + "Larger font :": "Default size", "Library games hover glow color :": "Default", "Library labels :": "Show", + "Longer tabs :": "no", "Miniprofile background :": "Hide", "Mouseover animation of settings menu tabs :": "Animated", "News container :": "Show", @@ -109,15 +126,17 @@ "No left images :": "no", "No titlebar (Linux) :": "no", "Offline friends :": "Show", - "Persistent Sidebar :": "yes", + "Persistent Sidebar :": "no", "Pointer fix :": "no", "Profiles :": "Minimal Dark", - "Profiles headers :": "no", + "Profiles headers :": "Minimal default", "Pure black color (OLED) :": "no", "Resize grip (Steam windows) :": "Default (smaller)", + "Resize width :": "Fixed position", "Right Sidebar :": "Left", "Root menu Steam text :": "Hide", "Show sidebar on mouseover :": "Default", + "Solid background color profiles :": "Default", "Static hovering (paysage games of Recent Games | Play Next) :": "Animated", "Static hovering (portrait games of Library | Collections) :": "Static", "Steam bigpicture button :": "Hide", diff --git a/.config/millennium/quick.css b/.config/millennium/quick.css new file mode 100644 index 0000000..b5430e1 --- /dev/null +++ b/.config/millennium/quick.css @@ -0,0 +1 @@ +/* Quick CSS file created by Millennium */ diff --git a/.themes/Serpensortia/intellij/Serpensortia.jar b/.themes/Serpensortia/intellij/Serpensortia.jar index 6961ed1..d98207e 100644 Binary files a/.themes/Serpensortia/intellij/Serpensortia.jar and b/.themes/Serpensortia/intellij/Serpensortia.jar differ