Only include what I'm using

This commit is contained in:
Joseph Ferano 2023-05-25 20:18:46 +07:00
commit b63a90059a
56 changed files with 6211 additions and 0 deletions

2232
.config/emacs/init.org Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,54 @@
# Configure
complete -f -c exercism -n "__fish_use_subcommand" -a "configure" -d "Writes config values to a JSON file."
complete -f -c exercism -n "__fish_seen_subcommand_from configure" -s t -l token -d "Set token"
complete -f -c exercism -n "__fish_seen_subcommand_from configure" -s w -l workspace -d "Set workspace"
complete -f -c exercism -n "__fish_seen_subcommand_from configure" -s a -l api -d "set API base url"
complete -f -c exercism -n "__fish_seen_subcommand_from configure" -s s -l show -d "show settings"
# Download
complete -f -c exercism -n "__fish_use_subcommand" -a "download" -d "Downloads and saves a specified submission into the local system"
complete -f -c exercism -n "__fish_seen_subcommand_from download" -s e -l exercise -d "the exercise slug"
complete -f -c exercism -n "__fish_seen_subcommand_from download" -s h -l help -d "help for download"
complete -f -c exercism -n "__fish_seen_subcommand_from download" -s T -l team -d "the team slug"
complete -f -c exercism -n "__fish_seen_subcommand_from download" -s t -l track -d "the track ID"
complete -f -c exercism -n "__fish_seen_subcommand_from download" -s u -l uuid -d "the solution UUID"
# Help
complete -f -c exercism -n "__fish_use_subcommand" -a "help" -d "Shows a list of commands or help for one command"
complete -f -c exercism -n "__fish_seen_subcommand_from help" -a "configure download help open submit troubleshoot upgrade version workspace"
# Open
complete -f -c exercism -n "__fish_use_subcommand" -a "open" -d "Opens a browser to exercism.io for the specified submission."
complete -f -c exercism -n "__fish_seen_subcommand_from open" -s h -l help -d "help for open"
# Submit
complete -f -c exercism -n "__fish_use_subcommand" -a "submit" -d "Submits a new iteration to a problem on exercism.io."
complete -f -c exercism -n "__fish_seen_subcommand_from submit" -s h -l help -d "help for submit"
# Troubleshoot
complete -f -c exercism -n "__fish_use_subcommand" -a "troubleshoot" -d "Outputs useful debug information."
complete -f -c exercism -n "__fish_seen_subcommand_from troubleshoot" -s f -l full-api-key -d "display full API key (censored by default)"
complete -f -c exercism -n "__fish_seen_subcommand_from troubleshoot" -s h -l help -d "help for troubleshoot"
# Upgrade
complete -f -c exercism -n "__fish_use_subcommand" -a "upgrade" -d "Upgrades to the latest available version."
complete -f -c exercism -n "__fish_seen_subcommand_from help" -s h -l help -d "help for help"
# Version
complete -f -c exercism -n "__fish_use_subcommand" -a "version" -d "Outputs version information."
complete -f -c exercism -n "__fish_seen_subcommand_from version" -s l -l latest -d "check latest available version"
complete -f -c exercism -n "__fish_seen_subcommand_from version" -s h -l help -d "help for version"
# Workspace
complete -f -c exercism -n "__fish_use_subcommand" -a "workspace" -d "Outputs the root directory for Exercism exercises."
complete -f -c exercism -n "__fish_seen_subcommand_from workspace" -s h -l help -d "help for workspace"
# Options
complete -f -c exercism -s h -l help -d "show help"
complete -f -c exercism -l timeout -a "10" -d "10 seconds"
complete -f -c exercism -l timeout -a "30" -d "30 seconds"
complete -f -c exercism -l timeout -a "60" -d "1 minute"
complete -f -c exercism -l timeout -a "300" -d "5 minutes"
complete -f -c exercism -l timeout -a "600" -d "10 minutes"
complete -f -c exercism -l timeout -a "" -d "override default HTTP timeout"
complete -f -c exercism -s v -l verbose -d "turn on verbose logging"

View File

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

76
.config/fish/config.fish Normal file
View File

@ -0,0 +1,76 @@
if status is-interactive
# Commands to run in interactive sessions can go here
end
set -gx XDG_CONFIG_HOME /home/joe/.config
set -gx XDG_DATA_HOME /home/joe/.local/share
set -gx XDG_CACHE_HOME /home/joe/.cache
# set -gx VISUAL emacsclient -n
# set -gx EDITOR emacsclient -n
set -gx VISUAL nvim
set -gx EDITOR nvim
set -gx MANPAGER "sh -c 'col -bx | bat -l man -p'"
set -gx DOTNET_CLI_TELEMETRY_OPTOUT 1
bind \cx 'if test -z (commandline) ; fg %1 &>/dev/null; else ; clear; commandline "╰─>$ "; end'
bind \e/ accept-autosuggestion
abbr -a -g gs "git status --untracked-files"
abbr -a -g gl "git lop -10"
abbr -a -g gll "git lol -15"
abbr -a -g gchm "git checkout master"
abbr -a -g gchb "git checkout -b"
abbr -a -g gch "git checkout"
abbr -a -g gc "git commit"
abbr -a -g gcm "git commit -m"
abbr -a -g gcau "git commit --author"
abbr -a -g gcam "git commit -am"
abbr -a -g gcamm "git commit --amend"
abbr -a -g gaa "git add -A && git status --untracked-files"
abbr -a -g gpl "git pull"
abbr -a -g gp "git push"
abbr -a -g gpd "git push -d origin"
abbr -a -g gpr "git remote prune origin"
abbr -a -g gm "git merge"
abbr -a -g gmm "git merge master"
abbr -a -g gf "git fetch"
abbr -a -g grh "git reset --hard"
abbr -a -g gcl "git clean -fd"
abbr -a -g gd "git diff"
abbr -a -g gb "git branch"
abbr -a -g gba "git branch -a"
# abbr -a -g gpu "git push -u origin"
# abbr -a -g glp "git lfs pull"
# abbr -a -g glm "gss git merge ; glp"
# abbr -a -g gdh "git diff HEAD"
# abbr -a -g gms "git merge --squash"
# abbr -a -g gr "git rebase"
# abbr -a -g gst "git stash"
# abbr -a -g gsl "git stash list"
# abbr -a -g gsp "git stash pop"
# abbr -a -g gsu "git submodule update"
# abbr -a -g glom "git lop -10 origin/master"
# abbr -a -g gmom "git merge origin/master"
# abbr -a -g gss "env GIT_LFS_SKIP_SMUDGE=1"
# export NNN_FIFO="/tmp/nnn.fifo" # temporary buffer for the previews
# export NNN_PLUG='p:preview-tui'
# complete -f -c dotnet -a "(dotnet complete)"
function vterm_printf;
printf "\e]%s\e\\" "$argv"
end
function vterm_prompt_end;
vterm_printf '51;A'(whoami)'@'(hostname)':'(pwd)
end
functions --copy fish_prompt vterm_old_fish_prompt
function fish_prompt --description 'Write out the prompt; do not replace this. Instead, put this at end of your file.'
# Remove the trailing newline from the original prompt. This is done
# using the string builtin from fish, but to make sure any escape codes
# are correctly interpreted, use %b for printf.
printf "%b" (string join " \n" (vterm_old_fish_prompt))
vterm_prompt_end
end

View File

@ -0,0 +1,2 @@
jorgebucaran/fisher
sei40kr/fish-ranger-cd

View File

@ -0,0 +1,43 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR --export CARGO_HOME:/home/joe/\x2elocal/share/bin/cargo/
SETUVAR EDITOR:hx
SETUVAR --export LC_COLLATE:C
SETUVAR --export --path LD_LIBRARY_PATH:/usr/local/lib
SETUVAR --export PYTHONSTARTUP:/etc/python/pythonrc
SETUVAR --export RUSTUP_HOME:/home/joe/\x2elocal/share/rustup/
SETUVAR XDG_CACHE_HOME:/home/joe/\x2ecache
SETUVAR XDG_CONFIG_HOME:/home/joe/\x2econfig
SETUVAR XDG_DATA_HOME:/home/joe/\x2elocal/share
SETUVAR __fish_initialized:3400
SETUVAR fish_color_autosuggestion:969896
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:b294bb
SETUVAR fish_color_comment:f0c674
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:b294bb
SETUVAR fish_color_error:cc6666
SETUVAR fish_color_escape:00a6b2
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:00a6b2
SETUVAR fish_color_param:81a2be
SETUVAR fish_color_quote:b5bd68
SETUVAR fish_color_redirection:8abeb7
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_greeting:
SETUVAR fish_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:B3A06D\x1eyellow
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr
SETUVAR fish_user_paths:/home/joe/\x2elocal/share/bin/cargo/bin\x1e\x1e/home/joe/\x2elocal/bin

View File

@ -0,0 +1,3 @@
function e --wraps=emacsclient -n $argv
emacsclient -n $argv;
end

View File

@ -0,0 +1,18 @@
function edit-dotfile
pushd /home/joe/.dotfiles/
export FZF_DEFAULT_COMMAND='find . -path './.git' -prune -o -print'
set file (fzf --height=35% --preview 'echo {}')
if test $file
set fullpath (readlink -f $file)
popd
if [ -d $fullpath ]
cd $fullpath
else
nvim $fullpath
end
end
commandline -f repaint
end

View File

@ -0,0 +1,5 @@
function fish_listpaths
for p in $PATH
echo $p
end
end

View File

@ -0,0 +1,106 @@
function fish_prompt
# This prompt shows:
# - green lines if the last return command is OK, red otherwise
# - your user name, in red if root or yellow otherwise
# - your hostname, in cyan if ssh or blue otherwise
# - the current path (with prompt_pwd)
# - date +%X
# - the current virtual environment, if any
# - the current git status, if any, with fish_git_prompt
# - the current battery state, if any, and if your power cable is unplugged, and if you have "acpi"
# - current background jobs, if any
# It goes from:
# ┬─[nim@Hattori:~][11:39:00]
# ╰─>$ echo here
# To:
# ┬─[nim@Hattori:~/w/dashboard][11:37:14][V:django20][G:master↑1|111][B:85%, 05:41:42 remaining]
# │ 2 15054 0% arrêtée sleep 100000
# │ 1 15048 0% arrêtée sleep 100000
# ╰─>$ echo there
set -l retc red
test $status = 0; and set retc green
function _nim_prompt_wrapper
set retc $argv[1]
set -l field_name $argv[2]
set -l field_value $argv[3]
set_color normal
set_color $retc
echo -n '─'
set_color -o green
echo -n '['
set_color normal
test -n $field_name
and echo -n $field_name:
set_color $retc
echo -n $field_value
set_color -o green
echo -n ']'
end
set_color $retc
echo -n '┬─'
set_color -o green
echo -n [
if functions -q fish_is_root_user; and fish_is_root_user
set_color -o red
else
set_color -o yellow
end
echo -n $USER
set_color -o white
echo -n @
if [ -z "$SSH_CLIENT" ]
set_color -o blue
else
set_color -o cyan
end
echo -n (prompt_hostname)
set_color -o white
set -g fish_prompt_pwd_dir_length 5
echo -n :(prompt_pwd)
set_color -o green
echo -n ']'
# Date
_nim_prompt_wrapper $retc '' (date +%X)
# Vi-mode
# The default mode prompt would be prefixed, which ruins our alignment.
function fish_mode_prompt
end
echo
# Background jobs
set_color normal
for job in (jobs)
set_color $retc
echo -n '│ '
set_color brown
echo $job
end
set_color normal
set_color $retc
echo -n '╰─>'
set -l user (whoami)
if test "$user" = "root"
set_color -o red
echo -n '# '
else
set_color -o green
echo -n '$ '
end
set_color normal
end

View File

@ -0,0 +1,6 @@
function fish_title
hostname
echo ":"
set -g fish_prompt_pwd_dir_length 0
echo -n (prompt_pwd)
end

View File

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

View File

@ -0,0 +1,9 @@
function kitty_select_theme
pushd /home/joe/.config/kitty/themes/preferred
set theme (fzf --height=35% --preview 'echo {} && kitty @ set-colors -a -c {}')
kitty @ set-colors -a -c $theme
cat $theme > ~/.config/kitty/theme.conf
popd
end

View File

@ -0,0 +1,6 @@
#
# These are very common and useful
#
function la --wraps ls --description "List contents of directory, including hidden files in directory using long format"
ls -lAh --group-directories-first $argv
end

View File

@ -0,0 +1,3 @@
function m --wraps=magit --description 'alias m magit'
magit $argv;
end

View File

@ -0,0 +1,37 @@
# Rename this file to match the name of the function
# e.g. ~/.config/fish/functions/n.fish
# or, add the lines to the 'config.fish' file.
function n --wraps nnn --description 'support nnn quit and change directory'
# Block nesting of nnn in subshells
if test -n "$NNNLVL" -a "$NNNLVL" -ge 1
echo "nnn is already running"
return
end
# The behaviour is set to cd on quit (nnn checks if NNN_TMPFILE is set)
# If NNN_TMPFILE is set to a custom path, it must be exported for nnn to
# see. To cd on quit only on ^G, remove the "-x" from both lines below,
# without changing the paths.
if test -n "$XDG_CONFIG_HOME"
set -x NNN_TMPFILE "$XDG_CONFIG_HOME/nnn/.lastd"
else
set -x NNN_TMPFILE "$HOME/.config/nnn/.lastd"
end
# Unmask ^Q (, ^V etc.) (if required, see `stty -a`) to Quit nnn
# stty start undef
# stty stop undef
# stty lwrap undef
# stty lnext undef
# The command function allows one to alias this function to `nnn` without
# making an infinitely recursive alias
set -x NNN_PLUG 'p:preview-tui'
command nnn -ed -P p $argv
if test -e $NNN_TMPFILE
source $NNN_TMPFILE
rm $NNN_TMPFILE
end
end

View File

@ -0,0 +1,3 @@
function r --wraps=ranger-cd --description 'alias r ranger-cd'
ranger-cd $argv;
end

View File

@ -0,0 +1,13 @@
# ranger-cd.fish
# author: Seong Yong-ju <sei40kr@gmail.com>
function ranger-cd -w 'ranger' -d 'Automatically change the directory in fish after closing ranger'
set -l tempfile (mktemp -t tmp.XXXXXX)
ranger --choosedir=$tempfile $argv
if [ -f $tempfile ]
cd (cat $tempfile)
end
rm -f $tempfile
end

View File

@ -0,0 +1,6 @@
function restore_job
if jobs > /dev/null
fg
clear
end
end

View File

@ -0,0 +1,3 @@
function rustup --wraps='RUSTUP_HOME=/home/joe/.local/share/rustup/ /home/joe/.local/share/bin/cargo/bin/rustup' --description 'alias rustup RUSTUP_HOME=/home/joe/.local/share/rustup/ /home/joe/.local/share/bin/cargo/bin/rustup'
RUSTUP_HOME=/home/joe/.local/share/rustup/ /home/joe/.local/share/bin/cargo/bin/rustup $argv
end

View File

@ -0,0 +1,3 @@
function sql
SQLITE_HISTORY="$XDG_CACHE_HOME"/sqlite_history sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc "$argv"
end

View File

@ -0,0 +1,3 @@
function v --wraps=nvim --description 'alias v nvim'
nvim $argv;
end

View File

@ -0,0 +1,3 @@
function wget --description 'alias wget wget --hsts-file="$XDG_CACHE_HOME/wget-hsts"'
command wget --hsts-file="$XDG_CACHE_HOME/wget-hsts" $argv
end

18
.config/git/config Normal file
View File

@ -0,0 +1,18 @@
[user]
email = joseph@ferano.io
name = Joseph Ferano
[init]
defaultBranch = master
[alias]
lop = log --pretty='%C(green)%an %C(blue)(%ad)%n %C(yellow)%h %C(white)| %C(reset)%s' --abbrev-commit --date=relative
lol = log --graph --pretty='%C(yellow)%h %C(green)%an %C(reset)%s' --abbrev-commit
[diff]
tool = kitty
guitool = kitty.gui
[difftool]
prompt = false
trustExitCode = true
[difftool "kitty"]
cmd = kitty +kitten diff $LOCAL $REMOTE
[difftool "kitty.gui"]
cmd = kitty kitty +kitten diff $LOCAL $REMOTE

View File

@ -0,0 +1,61 @@
import json
import sys
def env_to_str(env):
"""Convert an env list to a series of '--env key=value' parameters and return as a string."""
# FIXME: running launch with --env params doesn't seem to work - I get this error:
# Failed to launch child: --env
# With error: No such file or directory
# Press Enter to exit.
# So, skip this for now.
return ''
# s = ''
# for key in env:
# s += f"--env {key}={env[key]} "
# return s.strip()
def cmdline_to_str(cmdline):
"""Convert a cmdline list to a space separated string."""
s = ''
for e in cmdline:
s += f"{e} "
return s.strip()
def fg_proc_to_str(fg):
"""Convert a foreground_processes list to a space separated string."""
s = ''
fg = fg[0]
# s += f"--cwd {fg['cwd']} {cmdline_to_str(fg['cmdline'])}"
s += f"{cmdline_to_str(fg['cmdline'])}"
return s
def convert(session):
"""Convert a kitty session dict, into a kitty session file and output it."""
for os_window in session:
print('\nnew_os_window\n')
for tab in os_window['tabs']:
print(f"new_tab {tab['title']}")
# print('enabled_layouts *)
print(f"layout {tab['layout']}")
# This is a bit of a kludge to set cwd for the tab, as
# setting it in the launch command didn't work, for some reason?
if tab['windows']:
print(f"cd {tab['windows'][0]['cwd']}")
for w in tab['windows']:
print(f"title {w['title']}")
print(f"launch {env_to_str(w['env'])} {fg_proc_to_str(w['foreground_processes'])}")
if w['is_focused']:
print('focus')
if __name__ == "__main__":
stdin = sys.stdin.readlines()
session = json.loads(''.join(stdin))
convert(session)

86
.config/kitty/kitty.conf Normal file
View File

@ -0,0 +1,86 @@
include /home/joe/.config/kitty/theme.conf
font_size 13.0
adjust_line_height 4
adjust_column_width 0
window_resize_step_cells 3
window_resize_step_lines 3
window_border_width 1.5
draw_minimal_borders yes
window_margin_width 0.0
active_border_color #bbb
inactive_border_color #555
bell_border_color #ff5a00
inactive_text_alpha 1
hide_window_decorations yes
cursor_shape block
allow_remote_control yes
#: single_instance yes
listen_on unix:/tmp/kitty
window_padding_width 4
window_margin_width 2
tab_bar_style powerline
tab_powerline_style round
tab_bar_align left
sync_to_monitor yes
input_delay 3
scrollback_pager bash -c "exec nvim 63<&0 0</dev/null -u NONE -c 'map <silent> q :qa!<CR>' -c 'set shell=bash scrollback=100000 termguicolors laststatus=0 clipboard+=unnamedplus' -c 'autocmd TermEnter * stopinsert' -c 'autocmd TermClose * call cursor(max([0,INPUT_LINE_NUMBER-1])+CURSOR_LINE, CURSOR_COLUMN)' -c 'terminal sed </dev/fd/63 -e \"s/'$'\x1b'']8;;file:[^\]*[\]//g\" && sleep 0.01 && printf \"'$'\x1b'']2;\"'"
enabled_layouts tall,stack,fat,grid
kitty_mod ctrl+alt
map alt+f no_op
map alt+b no_op
map ctrl+shift+f1 show_kitty_doc overview
map kitty_mod+enter launch --cwd=current
map ctrl+alt+c load_config_file
map kitty_mod+m toggle_layout stack
map kitty_mod+shift+c next_layout
map kitty_mod+h neighboring_window left
map kitty_mod+j neighboring_window down
map kitty_mod+k neighboring_window up
map kitty_mod+l neighboring_window right
map ctrl+y paste_from_clipboard
map kitty_mod+p previous_tab
map kitty_mod+n next_tab
map kitty_mod+q close_tab
map kitty_mod+. move_tab_forward
map kitty_mod+, move_tab_backward
map alt+t>n new_tab
map alt+t>r set_tab_title
map kitty_mod+1 goto_tab 1
map kitty_mod+2 goto_tab 2
map kitty_mod+3 goto_tab 3
map kitty_mod+4 goto_tab 4
map kitty_mod+5 goto_tab 5
map kitty_mod+6 goto_tab 6
map kitty_mod+7 goto_tab 7
map kitty_mod+8 goto_tab 8
map kitty_mod+9 goto_tab 9
map kitty_mod+e show_scrollback
map kitty_mod+shift+k move_window up
map kitty_mod+shift+h move_window left
map kitty_mod+shift+l move_window right
map kitty_mod+shift+j move_window down
#: map f1 launch --type overlay --stdin-add-formatting --stdin-source=@screen_scrollback ~/.config/kitty/pager.sh

21
.config/kitty/theme.conf Normal file
View File

@ -0,0 +1,21 @@
background #212733
foreground #d9d7ce
cursor #ffcc66
selection_background #343f4c
color0 #191e2a
color8 #686868
color1 #ed8274
color9 #f28779
color2 #a6cc70
color10 #bae67e
color3 #fad07b
color11 #ffd580
color4 #6dcbfa
color12 #73d0ff
color5 #cfbafa
color13 #d4bfff
color6 #90e1c6
color14 #95e6cb
color7 #c7c7c7
color15 #ffffff
selection_foreground #212733

View File

@ -0,0 +1,21 @@
background #202020
foreground #d0d0d0
cursor #d0d0d0
selection_background #303030
color0 #151515
color8 #505050
color1 #ac4142
color9 #ac4142
color2 #7e8d50
color10 #7e8d50
color3 #e5b566
color11 #e5b566
color4 #6c99ba
color12 #6c99ba
color5 #9e4e85
color13 #9e4e85
color6 #7dd5cf
color14 #7dd5cf
color7 #d0d0d0
color15 #f5f5f5
selection_foreground #202020

View File

@ -0,0 +1,21 @@
background #161718
foreground #c4c8c5
cursor #d0d0d0
selection_background #444444
color0 #000000
color8 #000000
color1 #fc5ef0
color9 #fc5ef0
color2 #86c38a
color10 #94f936
color3 #ffd6b1
color11 #f5ffa7
color4 #85befd
color12 #95cbfe
color5 #b9b5fc
color13 #b9b5fc
color6 #85befd
color14 #85befd
color7 #dfdfdf
color15 #dfdfdf
selection_foreground #161718

View File

@ -0,0 +1,21 @@
background #ffffff
foreground #262626
cursor #6fd2fc
selection_background #6fd2fc
color0 #000000
color8 #545753
color1 #f72729
color9 #fb0416
color2 #32895c
color10 #2cc631
color3 #f96f1c
color11 #fcd627
color4 #125ccf
color12 #156ffe
color5 #9f00bc
color13 #e800b0
color6 #32c2c0
color14 #39d5ce
color7 #b2b2b2
color15 #ededec
selection_foreground #ffffff

View File

@ -0,0 +1,21 @@
background #212324
foreground #b9b9b9
cursor #bbbbbb
selection_background #2f3333
color0 #000000
color8 #000000
color1 #e8331c
color9 #df5a4f
color2 #68c156
color10 #76b768
color3 #f1d32b
color11 #eed64a
color4 #1c98e8
color12 #387bd2
color5 #8e69c8
color13 #957bbd
color6 #1c98e8
color14 #3d96e2
color7 #b9b9b9
color15 #b9b9b9
selection_foreground #212324

View File

@ -0,0 +1,21 @@
background #1c1e20
foreground #b8daee
cursor #708183
selection_background #2a2a24
color0 #1c1d19
color8 #1c1d19
color1 #f18238
color9 #d12a24
color2 #9ed264
color10 #a7d32c
color3 #f3ef6d
color11 #ff8948
color4 #4f96be
color12 #61b8d0
color5 #695abb
color13 #695abb
color6 #d53864
color14 #d53864
color7 #fefffe
color15 #fefffe
selection_foreground #1c1e20

View File

@ -0,0 +1,47 @@
background #3b3c35
foreground #fdfff1
cursor #fdfff1
cursor_text_color #000000
selection_foreground #3b3c35
selection_background #fdfff1
# dull black
color0 #3b3c35
# light black
color8 #6e7066
# dull red
color1 #f82570
# light red
color9 #f82570
# dull green
color2 #a6e12d
# light green
color10 #a6e12d
# yellow
color3 #e4db73
# light yellow
color11 #e4db73
# blue
color4 #fc961f
# light blue
color12 #fc961f
# magenta
color5 #ae81ff
# light magenta
color13 #ae81ff
# cyan
color6 #66d9ee
# light cyan
color14 #66d9ee
# dull white
color7 #fdfff1
# bright white
color15 #fdfff1

View File

@ -0,0 +1,47 @@
background #403e41
foreground #fcfcfa
cursor #fcfcfa
cursor_text_color #000000
selection_foreground #403e41
selection_background #fcfcfa
# dull black
color0 #403e41
# light black
color8 #727072
# dull red
color1 #ff6188
# light red
color9 #ff6188
# dull green
color2 #a9dc76
# light green
color10 #a9dc76
# yellow
color3 #ffd866
# light yellow
color11 #ffd866
# blue
color4 #fc9867
# light blue
color12 #fc9867
# magenta
color5 #ab9df2
# light magenta
color13 #ab9df2
# cyan
color6 #78dce8
# light cyan
color14 #78dce8
# dull white
color7 #fcfcfa
# bright white
color15 #fcfcfa

View File

@ -0,0 +1,47 @@
background #3a4449
foreground #f2fffc
cursor #f2fffc
cursor_text_color #000000
selection_foreground #3a4449
selection_background #f2fffc
# dull black
color0 #3a4449
# light black
color8 #6b7678
# dull red
color1 #ff6d7e
# light red
color9 #ff6d7e
# dull green
color2 #a2e57b
# light green
color10 #a2e57b
# yellow
color3 #ffed72
# light yellow
color11 #ffed72
# blue
color4 #ffb270
# light blue
color12 #ffb270
# magenta
color5 #baa0f8
# light magenta
color13 #baa0f8
# cyan
color6 #7cd5f1
# light cyan
color14 #7cd5f1
# dull white
color7 #f2fffc
# bright white
color15 #f2fffc

View File

@ -0,0 +1,47 @@
background #3a3d4b
foreground #eaf2f1
cursor #eaf2f1
cursor_text_color #000000
selection_foreground #3a3d4b
selection_background #eaf2f1
# dull black
color0 #3a3d4b
# light black
color8 #696d77
# dull red
color1 #ff657a
# light red
color9 #ff657a
# dull green
color2 #bad761
# light green
color10 #bad761
# yellow
color3 #ffd76d
# light yellow
color11 #ffd76d
# blue
color4 #ff9b5e
# light blue
color12 #ff9b5e
# magenta
color5 #c39ac9
# light magenta
color13 #c39ac9
# cyan
color6 #9cd1bb
# light cyan
color14 #9cd1bb
# dull white
color7 #eaf2f1
# bright white
color15 #eaf2f1

View File

@ -0,0 +1,47 @@
background #403838
foreground #fff1f3
cursor #fff1f3
cursor_text_color #000000
selection_foreground #403838
selection_background #fff1f3
# dull black
color0 #403838
# light black
color8 #72696a
# dull red
color1 #fd6883
# light red
color9 #fd6883
# dull green
color2 #adda78
# light green
color10 #adda78
# yellow
color3 #f9cc6c
# light yellow
color11 #f9cc6c
# blue
color4 #f38d70
# light blue
color12 #f38d70
# magenta
color5 #a8a9eb
# light magenta
color13 #a8a9eb
# cyan
color6 #85dacc
# light cyan
color14 #85dacc
# dull white
color7 #fff1f3
# bright white
color15 #fff1f3

View File

@ -0,0 +1,47 @@
background #363537
foreground #f7f1ff
cursor #f7f1ff
cursor_text_color #000000
selection_foreground #363537
selection_background #f7f1ff
# dull black
color0 #363537
# light black
color8 #69676c
# dull red
color1 #fc618d
# light red
color9 #fc618d
# dull green
color2 #7bd88f
# light green
color10 #7bd88f
# yellow
color3 #fce566
# light yellow
color11 #fce566
# blue
color4 #fd9353
# light blue
color12 #fd9353
# magenta
color5 #948ae3
# light magenta
color13 #948ae3
# cyan
color6 #5ad4e6
# light cyan
color14 #5ad4e6
# dull white
color7 #f7f1ff
# bright white
color15 #f7f1ff

View File

@ -0,0 +1,21 @@
background #191919
foreground #c4c4b5
cursor #f6f6ec
selection_background #343434
color0 #191919
color8 #615e4b
color1 #f3005f
color9 #f3005f
color2 #97e023
color10 #97e023
color3 #fa8419
color11 #dfd561
color4 #9c64fe
color12 #9c64fe
color5 #f3005f
color13 #f3005f
color6 #57d1ea
color14 #57d1ea
color7 #c4c4b5
color15 #f6f6ee
selection_foreground #191919

View File

@ -0,0 +1,25 @@
# One Dark by Giuseppe Cesarano, https://github.com/GiuseppeCesarano
# This work is licensed under the terms of the GPL-2.0 license.
# For a copy, see https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html.
foreground #979eab
background #282c34
cursor #cccccc
color0 #282c34
color1 #e06c75
color2 #98c379
color3 #e5c07b
color4 #61afef
color5 #be5046
color6 #56b6c2
color7 #979eab
color8 #393e48
color9 #d19a66
color10 #56b6c2
color11 #e5c07b
color12 #61afef
color13 #be5046
color14 #56b6c2
color15 #abb2bf
selection_foreground #282c34
selection_background #979eab

View File

@ -0,0 +1,25 @@
# Relaxed Afterglow by Michael Kühnel <mail@michael-kuehnel.de>, https://github.com/Relaxed-Theme/relaxed-terminal-themes
# This work is licensed under the terms of the MIT license.
# For a copy, see https://opensource.org/licenses/MIT.
background #353a44
foreground #d9d9d9
cursor #d9d9d9
selection_foreground #d8d8d8
selection_background #6a7984
color0 #151515
color1 #bc5653
color2 #909d63
color3 #ebc17a
color4 #6a8799
color5 #b06698
color6 #c9dfff
color7 #d9d9d9
color8 #636363
color9 #bc5653
color10 #a0ac77
color11 #ebc17a
color12 #7eaac7
color13 #b06698
color14 #acbbd0
color15 #f7f7f7

View File

@ -0,0 +1,21 @@
background #fdf6e3
foreground #52676f
cursor #52676f
selection_background #e9e2cb
color0 #e4e4e4
color8 #ffffd7
color1 #d70000
color9 #d75f00
color2 #5f8700
color10 #585858
color3 #af8700
color11 #626262
color4 #0087ff
color12 #808080
color5 #af005f
color13 #5f5faf
color6 #00afaf
color14 #8a8a8a
color7 #262626
color15 #1c1c1c
selection_foreground #fcf4dc

View File

@ -0,0 +1,21 @@
background #262626
foreground #d0d0d0
cursor #e3c8ae
selection_background #4d4d4d
color0 #1c1c1c
color8 #1c1c1c
color1 #d68686
color9 #d68686
color2 #aed686
color10 #aed686
color3 #d7af87
color11 #e4c9af
color4 #86aed6
color12 #86aed6
color5 #d6aed6
color13 #d6aed6
color6 #8adbb4
color14 #b1e7dd
color7 #d0d0d0
color15 #efefef
selection_foreground #262626

View File

@ -0,0 +1,21 @@
background #2c2c2c
foreground #cccccc
cursor #cccccc
selection_background #505050
color0 #000000
color8 #000000
color1 #f17779
color9 #f17779
color2 #99cc99
color10 #99cc99
color3 #ffcc66
color11 #ffcc66
color4 #6699cc
color12 #6699cc
color5 #cc99cc
color13 #cc99cc
color6 #66cccc
color14 #66cccc
color7 #fffefe
color15 #fffefe
selection_foreground #2c2c2c

View File

@ -0,0 +1,21 @@
background #171717
foreground #ded9ce
cursor #bbbbbb
selection_background #453a39
color0 #000000
color8 #313131
color1 #ff605a
color9 #f58b7f
color2 #b1e869
color10 #dcf88f
color3 #ead89c
color11 #eee5b2
color4 #5da9f6
color12 #a5c7ff
color5 #e86aff
color13 #ddaaff
color6 #82fff6
color14 #b6fff9
color7 #ded9ce
color15 #fefffe
selection_foreground #171717

View File

@ -0,0 +1,21 @@
background #212733
foreground #d9d7ce
cursor #ffcc66
selection_background #343f4c
color0 #191e2a
color8 #686868
color1 #ed8274
color9 #f28779
color2 #a6cc70
color10 #bae67e
color3 #fad07b
color11 #ffd580
color4 #6dcbfa
color12 #73d0ff
color5 #cfbafa
color13 #d4bfff
color6 #90e1c6
color14 #95e6cb
color7 #c7c7c7
color15 #ffffff
selection_foreground #212733

View File

@ -0,0 +1,49 @@
# gruvbox dark by morhetz, https://github.com/morhetz/gruvbox
# This work is licensed under the terms of the MIT license.
# For a copy, see https://opensource.org/licenses/MIT.
background #282828
foreground #ebdbb2
cursor #928374
selection_foreground #928374
selection_background #3c3836
color0 #282828
color8 #928374
# red
color1 #cc241d
# light red
color9 #fb4934
# green
color2 #98971a
# light green
color10 #b8bb26
# yellow
color3 #d79921
# light yellow
color11 #fabd2d
# blue
color4 #458588
# light blue
color12 #83a598
# magenta
color5 #b16286
# light magenta
color13 #d3869b
# cyan
color6 #689d6a
# lighy cyan
color14 #8ec07c
# light gray
color7 #a89984
# dark gray
color15 #928374

86
.config/mbsync/config Normal file
View File

@ -0,0 +1,86 @@
IMAPAccount ferano.io
Host mail.gandi.net
UserCmd "age --decrypt -i ~/.local/credentials/personal ~/.local/credentials/authinfo.age | awk -F ' ' '/mail.gandi.net/ { print $(NF-2);exit; }'"
PassCmd "age --decrypt -i ~/.local/credentials/personal ~/.local/credentials/authinfo.age | awk -F ' ' '/mail.gandi.net/ { print $(NF);exit; }'"
SSLType IMAPS
IMAPStore ferano.io.remote
Account ferano.io
MaildirStore ferano.io.local
Subfolders Verbatim
# The trailing "/" is important
Path ~/.mail/ferano.io/
Inbox ~/.mail/ferano.io/Inbox
Channel ferano.io
Far :ferano.io.remote:
Near :ferano.io.local:
# Include everything
Patterns *
Sync All
Create Both
Remove Both
Expunge Both
SyncState *
Channel ferano.io.inbox
Far :ferano.io.remote:
Near :ferano.io.local:
Patterns INBOX
Sync All
Create Both
Remove Both
Expunge Both
SyncState *
IMAPAccount gmail
Host imap.gmail.com
UserCmd "age --decrypt -i ~/.local/credentials/personal ~/.local/credentials/authinfo.age | awk -F ' ' '/mail.gmail.com/ { print $(NF-2);exit; }'"
PassCmd "age --decrypt -i ~/.local/credentials/personal ~/.local/credentials/authinfo.age | awk -F ' ' '/mail.gmail.com/ { print $(NF);exit; }'"
SSLType IMAPS
IMAPStore gmail.remote
Account gmail
MaildirStore gmail.local
Subfolders Verbatim
# The trailing "/" is important
Path ~/.mail/gmail/
Inbox ~/.mail/gmail/Inbox
Channel gmail
Far :gmail.remote:
Near :gmail.local:
# Include everything
Patterns *
Sync All
Create Both
Remove Both
Expunge Both
SyncState *
Channel gmail.inbox
Far :gmail.remote:
Near :gmail.local:
Patterns INBOX
Sync All
Create Both
Remove Both
Expunge Both
SyncState *
Channel gmail.allmail
Far :gmail.remote:
Near :gmail.local:
Patterns *All*
Sync All
Create Both
Remove Both
Expunge Both
SyncState *
Group all
Channel ferano.io
Channel gmail

View File

@ -0,0 +1,10 @@
# If a config.py file exists, this file is ignored unless it's explicitly loaded
# via config.load_autoconfig(). For more information, see:
# https://github.com/qutebrowser/qutebrowser/blob/master/doc/help/configuring.asciidoc#loading-autoconfigyml
# DO NOT edit this file by hand, qutebrowser will overwrite it.
# Instead, create a config.py - see :help for details.
config_version: 2
settings:
content.notifications.enabled:
https://www.reddit.com: false

View File

File diff suppressed because it is too large Load Diff

View File

2
.config/sqlite3/sqliterc Normal file
View File

@ -0,0 +1,2 @@
.headers on
.mode column

6
.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
.config/emacs/*
!.config/emacs/init.org
/.config/nvim/plugin/
.config/magit/*
!.config/magit/init.el
!.config/magit/early-init.el

7
LICENSE Normal file
View File

@ -0,0 +1,7 @@
Copyright © 2023 Joseph Ferano
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

9
README.org Normal file
View File

@ -0,0 +1,9 @@
#+OPTIONS: toc:nil
* Dotfiles
These are my active dotfiles. Compared to my [[https://git.ferano.io/JosephFerano/old-dotfiles][old dotfiles,]] this is a much
smaller list of applications I'm using on a day to day basis, mainly because I'm
using Emacs for more and more these days. To see what I mean, check out my
literate emacs init file [[https://git.ferano.io/JosephFerano/dotfiles/src/branch/master/.config/emacs/init.org][here]]. This repository is setup to work with [[https://www.gnu.org/software/stow/][GNU Stow]].