summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/bash/bash_aliases81
-rw-r--r--config/bash/bash_profile5
-rw-r--r--config/bash/bashrc160
-rw-r--r--config/bash/inputrc10
-rw-r--r--config/bash/profile12
-rw-r--r--config/git/config13
-rw-r--r--config/git/ignore7
-rw-r--r--config/gtk-3.0/settings.ini15
-rw-r--r--config/intellijidea/ideavimrc51
-rw-r--r--config/locale.conf5
-rw-r--r--config/mpv/mpv.conf5
-rw-r--r--config/nvim/colors/mac_classic.vim226
-rw-r--r--config/nvim/ftplugin/tex.vim1
-rw-r--r--config/nvim/init.vim193
-rw-r--r--config/nvim/pack/mitsuo/Readme.txt1
-rw-r--r--config/nvim/pack/mitsuo/start/fun/Readme.txt1
-rw-r--r--config/nvim/pack/mitsuo/start/fun/plugin/fun.vim121
m---------config/nvim/pack/mitsuo/start/vim-commentary0
-rw-r--r--config/pandoc/linuxcolors_style.html188
-rw-r--r--config/ssh/Readme.txt8
-rw-r--r--config/ssh/config9
-rw-r--r--config/ssh/sshd_config117
-rw-r--r--config/tmux/tmux.conf63
-rw-r--r--config/vim/fun.vim89
-rw-r--r--config/vim/pack/mitsuo/README.md12
m---------config/vim/pack/mitsuo/nerdtree0
m---------config/vim/pack/mitsuo/vim-fugitive0
-rw-r--r--config/vim/viminfo31
-rw-r--r--config/vim/vimrc332
-rw-r--r--config/vim/vimrc_windows10
-rw-r--r--config/vscode/Readme.adoc7
-rw-r--r--config/vscode/keybindings.json58
-rw-r--r--config/vscode/settings.json14
-rw-r--r--config/xorg/xbindkeysrc177
-rw-r--r--config/xorg/xinitrc71
-rw-r--r--config/zathura/zathurarc59
36 files changed, 2152 insertions, 0 deletions
diff --git a/config/bash/bash_aliases b/config/bash/bash_aliases
new file mode 100644
index 0000000..899f80f
--- /dev/null
+++ b/config/bash/bash_aliases
@@ -0,0 +1,81 @@
+# Bash aliases.
+#
+# Previously set environment variables work.
+# Aliases are recursive (I.e., an alias inside an alias works).
+
+
+# Shortcuts
+# ======================================================================
+
+alias e="$EDITOR"
+alias aliases="$EDITOR ~/.bash_aliases && source ~/.bash_aliases"
+alias evrc='vim ~/.vim/vimrc'
+alias ebrc="$EDITOR ~/.bashrc && source ~/.bashrc"
+#alias jupyter-lab='jupyter-lab . &> /dev/null &' # Redirect stdout and stderr
+# wtf error with Code-OSS
+# Ref.: https://stackoverflow.com/a/73317738/7498073
+alias code="code --enable-proposed-api ms-toolsai.jupyter"
+
+
+# Common program's options
+# ======================================================================
+
+# coretools
+alias diff2='diff --color=always -ys' # side by side, tell if file identical
+alias diff='diff --color=always'
+alias dir='dir --color=auto'
+alias grep='grep --color=auto -i' # color case-insensitive
+# Sort files by ASCII value (override current locale)
+alias ls='ls --color=auto --group-directories-first --classify'
+alias la='ls -A'
+alias ll='ls -l -h'
+alias lla='ll -A'
+alias ip='ip --color=auto'
+
+alias gcc='gcc -g -std=c99 -lm'
+alias ed='ed -p "* "'
+
+# https://missing.csail.mit.edu/2020/version-control/
+alias gitlogpretty='git log --all --graph --decorate --abbrev-commit'
+# https://stackoverflow.com/a/15606995/7498073
+alias gitshowtrackedfiles='git ls-tree -r master --name-only'
+
+# Precautionary
+alias rm='rm -I' # Promt before removing more than 3 files
+alias mv='mv -i' # Promt before overwrite
+alias cp='cp -i' # same
+
+#alias sqlite3='sqlite3 --safe' # Disables some really cool dot-commands
+
+
+# Other program's options
+# ======================================================================
+
+#alias feh='feh -g 640x480 -S filename' # opens files sorted by filename
+alias feh='feh -g 640x480 --auto-zoom --scale-down --on-last-slide hold'
+alias feht='feh -Tthumb_s'
+alias fehfx='feh -Tfs --slideshow-delay'
+alias fehfrx='feh -Tfs --recursive --slideshow-delay'
+alias units='units --verbose'
+alias tty-clock='tty-clock -cs'
+
+# Quick tools
+alias pdfreduce='gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook'
+alias youtube-dl_info='youtube-dl --get-filename --get-format --get-duration --get-description'
+alias youtube-dl_fast='youtube-dl --format "best[height<=720][fps<=?30]" -o '\''%(title)s.%(ext)s'\'
+alias mpv_webcam='mpv av://v4l2:/dev/video0' # retrived from the Archwiki
+alias mpv_nhk_720p='mpv "https://nhkwlive-ojp.akamaized.net/hls/live/2003459/nhkwlive-ojp-en/index_4M.m3u8"'
+alias scan_dpto_europa='hp-scan --mode=color --device=hpaio:/net/OfficeJet_Pro_6970?ip=192.168.0.7'
+#alias java8='~/code/openjdk8/jdk8u265-b01/bin/java'
+#alias javac8='~/code/openjdk8/jdk8u265-b01/bin/javac'
+#alias inf265_jupyterlab='cd /home/mitsuo/docs/courses/2021-1/INF265; \
+# jupyter lab'
+
+
+# Cosmetic
+# ======================================================================
+alias :q='cowsay -d "this isn'\''t Vim"' # To scape single quotes in single
+ # quoted string first finish opened
+ # string and add the scaped quote
+ # (\').
+alias :w="cowsay -b \"this isn't Vim\""
diff --git a/config/bash/bash_profile b/config/bash/bash_profile
new file mode 100644
index 0000000..5545f00
--- /dev/null
+++ b/config/bash/bash_profile
@@ -0,0 +1,5 @@
+#
+# ~/.bash_profile
+#
+
+[[ -f ~/.bashrc ]] && . ~/.bashrc
diff --git a/config/bash/bashrc b/config/bash/bashrc
new file mode 100644
index 0000000..7f0abff
--- /dev/null
+++ b/config/bash/bashrc
@@ -0,0 +1,160 @@
+#
+# ~/.bashrc: executed by bash(1) for interactive shells
+#
+# Tinkerer's guide to a prettier and colorful CLI:
+# https://wiki.archlinux.org/title/Color_output_in_console
+
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+# TROUBLESHOOTING
+# ===============
+
+export EDITOR=nvim
+export VISUAL=nvim
+export TERM=xterm-256color # Required for AWS VPS work good when SSHing
+
+# https://wiki.archlinux.org/title/GnuPG#Configure_pinentry_to_use_the_correct_TTY
+export GPG_TTY=$(tty)
+gpg-connect-agent updatestartuptty /bye >/dev/null
+
+
+# Bash configuration
+# ==================
+
+# don't put duplicate lines or lines starting with space in the history.
+# See bash(1) for more options
+HISTCONTROL=ignoreboth
+
+# append to the history file, don't overwrite it
+shopt -s histappend
+
+# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
+HISTSIZE=1000
+HISTFILESIZE=2000
+
+# check the window size after each command and, if necessary,
+# update the values of LINES and COLUMNS. (Isn't this the default behaviour?)
+shopt -s checkwinsize
+
+# If set, the pattern "**" used in a pathname expansion context will
+# match all files and zero or more directories and subdirectories.
+#shopt -s globstar
+
+# make less more friendly for non-text input files, see lesspipe(1)
+#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
+
+# colored GCC warnings and errors
+#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
+
+# Alias definitions.
+if [ -f ~/.bash_aliases ]; then
+ . ~/.bash_aliases
+fi
+
+# Don't forget to install bash-completion
+
+# Disable CTRL+S and CTRL+Q keybindings
+# (used to pause and resume output to terminal)
+# See: https://unix.stackexchange.com/a/137846/347754
+# https://unix.stackexchange.com/a/73499/347754
+stty -ixon
+
+
+# Prompt
+# ------
+
+# - Basic [user@host $pwd]$
+#PS1='[\u@\h \W]\$ '
+# - Blue timestamp and italic green pwd
+#PS1='\[\033[34m\]|\D{%H:%M:%S}| \[\033[3;32m\][\w]\[\033[00m\]\n\$ '
+
+# - user@host pwd (git prompt)
+# Ref.: https://stackoverflow.com/a/15398153/7498073
+source ~/.git-prompt.sh
+PS1='\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
+
+
+# Environment
+# ===========
+
+# FIXME: This is executed twice. One just after login (first bash) in tty. And
+# again then again in the terminal emulator.
+PATH="$HOME/.local/bin:$PATH"
+PATH="$HOME/mahcode/bin:$PATH"
+PATH="$HOME/code/tex-live-native/build/bin/x86_64-linux:$PATH"
+export PATH
+
+export MANPATH="$HOME/code/tex-live-native/build/texmf-dist/doc/man:$MANPATH"
+export INFOPATH="$HOME/code/tex-live-native/build/texmf-dist/doc/man:$INFOPATH"
+
+# XDG = Cross-Desktop Group
+# For more info see https://wiki.archlinux.org/index.php/XDG_Base_Directory
+export XDG_CONFIG_HOME="$HOME/.config"
+export XDG_CACHE_HOME="$HOME/.cache"
+export XDG_DATA_HOME="$HOME/.local/share"
+export XDG_STATE_HOME="$HOME/.local/state"
+
+export LC_COLLATE=C
+
+# fcitx5 (input method)
+export GTK_IM_MODULE=fcitx
+export QT_IM_MODULE=fcitx
+export XMODIFIERS=@im=fcitx
+
+# less
+LESS="-i " # ignore case
+LESS+="-S " # don't chop long lines
+LESS+="--RAW-CONTROL-CHARS"
+export LESS
+
+# better `ls` (and other programs like `tree`) colors
+eval "$(dircolors)"
+
+
+# Extra programs
+# --------------
+
+# tldr
+[ -f /usr/bin/tldr ] && export TLDR_CONFIG_DIR="$XDG_CONFIG_HOME"
+
+# gpg
+#export GPG_TTY=$(tty)
+
+# nvm
+#source /usr/share/nvm/init-nvm.sh
+
+# Pandoc: Bash completition for pandoc
+if [ -f /usr/bin/pandoc ]; then
+ eval "$(pandoc --bash-completion)"
+fi
+
+# Node.js
+#export NODE_PATH=~/code/nodejs/node-v16.15.1-linux-x64/lib/node_modules
+
+# Rust
+#. "$HOME/.cargo/env"
+
+# Ruby on Rails
+#https://stackoverflow.com/a/19072136/7498073
+#gempath="$HOME/.local/share/gem/ruby/3.0.0/bin"
+#export GEM_HOME="$(ruby -e 'puts Gem.user_dir')"
+#if [[ -d $gempath ]]; then
+# export PATH="$PATH:$GEM_HOME/bin"
+#fi
+
+
+# Fun
+# ================
+
+# Greeting or salute
+if [ -f /usr/games/cowsay ] || [ -f /usr/bin/cowsay ]; then
+ #cowsay -f flaming-sheep "oh no" # original
+ #cowsay $(fortune -e 30% debian-hints 20% linux 20% science \
+ #cowsay $(fortune 30% debian-hints 20% linux 20% science \
+ # 20% off/linux 10% off/black-humor)
+ cowsay $(fortune)
+ #fortune ascii-art
+else
+ echo "Welcome back $LOGNAME"
+fi
diff --git a/config/bash/inputrc b/config/bash/inputrc
new file mode 100644
index 0000000..f40f4a2
--- /dev/null
+++ b/config/bash/inputrc
@@ -0,0 +1,10 @@
+# Set up "vi input mode" in bash
+
+set editing-mode vi
+$if mode=vi
+
+set keymap vi-command
+Control-l: clear-screen
+
+set keymap vi-insert
+Control-l: clear-screen
diff --git a/config/bash/profile b/config/bash/profile
new file mode 100644
index 0000000..956694c
--- /dev/null
+++ b/config/bash/profile
@@ -0,0 +1,12 @@
+# ~/.profile: executed by the command interpreter for login shells.
+# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
+# exists.
+
+# the default umask is set in /etc/profile; for setting the umask
+# for ssh logins, install and configure the libpam-umask package.
+#umask 022
+
+# if bash
+if [ "$SHELL" = "/bin/bash" ]; then
+ . ~/.bashrc
+fi
diff --git a/config/git/config b/config/git/config
new file mode 100644
index 0000000..a5dd072
--- /dev/null
+++ b/config/git/config
@@ -0,0 +1,13 @@
+[user]
+ name = Mitsuo Tokumori
+[diff]
+ # used with $ git difftool
+ tool = nvim -d
+ submodule = log
+[merge]
+ tool = nvim -d
+[gitweb]
+ owner = Mitsuo Tokumori <[email protected]>
+[init]
+ defaultBranch = master
diff --git a/config/git/ignore b/config/git/ignore
new file mode 100644
index 0000000..d71d05b
--- /dev/null
+++ b/config/git/ignore
@@ -0,0 +1,7 @@
+# gitconfig file in ~/.config/git/config (if not in ~/.gitconfig)
+
+# Vim
+*.swp
+
+# KDE
+.directory
diff --git a/config/gtk-3.0/settings.ini b/config/gtk-3.0/settings.ini
new file mode 100644
index 0000000..7033423
--- /dev/null
+++ b/config/gtk-3.0/settings.ini
@@ -0,0 +1,15 @@
+[Settings]
+gtk-application-prefer-dark-theme=false
+gtk-button-images=true
+gtk-cursor-theme-name=breeze_cursors
+gtk-cursor-theme-size=24
+gtk-decoration-layout=icon:minimize,maximize,close
+gtk-enable-animations=true
+gtk-font-name=Noto Sans, 12
+gtk-icon-theme-name=breeze
+gtk-menu-images=true
+gtk-modules=colorreload-gtk-module:window-decorations-gtk-module
+gtk-primary-button-warps-slider=false
+gtk-theme-name=Breeze
+gtk-toolbar-style=3
+gtk-xft-dpi=98304
diff --git a/config/intellijidea/ideavimrc b/config/intellijidea/ideavimrc
new file mode 100644
index 0000000..c746971
--- /dev/null
+++ b/config/intellijidea/ideavimrc
@@ -0,0 +1,51 @@
+"" Source your .vimrc
+"source ~/.vimrc
+
+"" -- Suggested options --
+" Show a few lines of context around the cursor. Note that this makes the
+" text scroll if you mouse-click near the start or end of the window.
+set scrolloff=5
+
+" Do incremental searching.
+set incsearch
+
+" Don't use Ex mode, use Q for formatting.
+"map Q gq
+
+
+"" -- Map IDE actions to IdeaVim -- https://jb.gg/abva4t
+"" Map \r to the Reformat Code action
+"map \r <Action>(ReformatCode)
+
+"" Map <leader>d to start debug
+"map <leader>d <Action>(Debug)
+
+"" Map \b to toggle the breakpoint on the current line
+"map \b <Action>(ToggleLineBreakpoint)
+
+
+" Find more examples here: https://jb.gg/share-ideavimrc
+
+""" My stuff
+set hlsearch
+set ignorecase
+set smartcase
+set showmode
+nnoremap <C-L> :nohl<CR><C-L>
+nnoremap <F7> :tabp<CR>
+nnoremap <F8> :tabn<CR>
+
+""" IdeaVim options
+" Join and justify paragraphs/lines
+set ideajoin " smartjoin
+vnoremap gq :action FillParagraph<CR>
+" Thank you: https://stackoverflow.com/a/37842786/7498073
+" TIP: Got the action name by listing all actions that contain the word fill
+" `:actionlist fill`
+"set ideamarks
+
+""" Plugins
+" Couldn't make it to work well :(
+" https://github.com/abrookins/WrapToColumn
+" vnoremap gq :action com.andrewbrookins.idea.wrap.WrapParagraphAction<CR>
+
diff --git a/config/locale.conf b/config/locale.conf
new file mode 100644
index 0000000..b827928
--- /dev/null
+++ b/config/locale.conf
@@ -0,0 +1,5 @@
+LANG=C.UTF-8
+LC_COLLATE=C.UTF-8
+LC_MEASUREMENT=ja_JP.UTF-8
+LC_TIME=ja_JP.UTF-8
+LC_PAPER=ja_JP.UTF-8
diff --git a/config/mpv/mpv.conf b/config/mpv/mpv.conf
new file mode 100644
index 0000000..23b612d
--- /dev/null
+++ b/config/mpv/mpv.conf
@@ -0,0 +1,5 @@
+# ~/.config/mpv/mpv.conf
+
+# Screenshots
+screenshot-template="%f-%P"
+screenshot-directory="~/media/Pictures/Screenshots/mpv"
diff --git a/config/nvim/colors/mac_classic.vim b/config/nvim/colors/mac_classic.vim
new file mode 100644
index 0000000..9382bde
--- /dev/null
+++ b/config/nvim/colors/mac_classic.vim
@@ -0,0 +1,226 @@
+" Vim color scheme
+"
+" Name: mac_classic.vim
+" Maintainer: Drew Neil <[email protected]>
+" License: public domain
+" Version: 0.1
+
+" Boilerplate: {{{1
+set background=light
+highlight clear
+
+if exists("syntax_on")
+ syntax reset
+endif
+
+let g:colors_name = "mac_classic"
+
+
+" Colors: {{{1
+" TODO figure out how to not highlight TODO
+"
+" #000000
+" #3C4C72 - BLUE/GREY - cursor, rails helpers
+" #0000A2 - D.BLUE - numbers & function names
+" #1E39F6 - BLUE
+" #0066FF - L.BLUE - Comments, TODOs and folds
+" #6E79F1 - L.PURPLE - Booleans, Ruby Constants & CSS definitions
+" #318495 - BLUE/GREEN - Ruby instance/global/pseudo variables
+" #007B22 - D.GREEN - Strings, Labels and code blocks in Markdown
+" #00BC41 - L.GREEN - CSS common attributes & ruby interpolation
+" #990000 - BURGUNDY - Errors and Warnings
+" #D51015 - RED for constants, symbols, numbers
+" #E18AC7 - PINK RegularExpressions in Ruby
+" #FFCE77 - ORANGE - Incremental Search
+" #FFE6BB - L.ORANGE - Search
+" #C6DEFF - VL.BLUE Visual, Current StatusLine & AutoComplete selection
+" #808080 - Line numbers
+" #CFCFCF - VerticalSplit separator
+" #DFDFDF - Invisible Characters
+" #EFEFEF - LineNumber & Non-Current StatusLine
+" #F0F6FF - CursorLine & CursorColumn
+" #FFFFFF - WHITE
+" }}}
+
+" GUI: {{{1
+hi Cursor guifg=#FFFFFF ctermfg=15 guibg=#3C4C72 ctermbg=240
+hi Visual guibg=#C6DEFF ctermbg=189
+hi CursorLine guibg=#F0F6FF ctermbg=15
+hi CursorColumn guibg=#F0F6FF ctermbg=15
+hi LineNr guifg=#808080 ctermfg=244 guibg=#EFEFEF ctermbg=7
+hi VertSplit guifg=#FFFFFF ctermfg=15 guibg=#CFCFCF ctermbg=252 gui=NONE
+hi MatchParen guifg=#1E39F6 ctermfg=27 guibg=NONE gui=bold
+hi Pmenu guibg=#EFEFEF ctermbg=7
+hi PmenuSel guibg=#C6DEFF ctermbg=189
+hi Directory guifg=#D51015 ctermfg=160 gui=bold
+hi Folded guifg=#0066FF ctermfg=27 guibg=#FFFFFF ctermbg=15
+" StatusLine: {{{2
+hi StatusLine guifg=#000000 ctermfg=0 guibg=#C6DEFF ctermbg=189 gui=italic
+hi StatusLineNC guifg=#000000 ctermfg=0 guibg=#EFEFEF ctermbg=7 gui=NONE
+
+" Search: {{{2
+" [IncSearch is stronger than Search]
+hi IncSearch guifg=NONE guibg=#FFCE77 ctermbg=222 gui=NONE
+hi Search guibg=#FFE6BB ctermbg=223
+
+" Syntax: {{{1
+hi Normal guifg=#000000 ctermfg=0 guibg=#FFFFFF ctermbg=15
+hi Boolean guifg=#6E79F1 ctermfg=69 gui=bold
+hi Character guifg=#D51015 ctermfg=160 gui=bold
+hi Comment guifg=#0066FF ctermfg=27 gui=italic
+hi Conditional guifg=#1E39F6 ctermfg=27 gui=bold
+hi Constant guifg=#D51015 ctermfg=160 gui=bold
+hi Define guifg=#1E39F6 ctermfg=27 gui=bold
+hi ErrorMsg guifg=#FFFFFF ctermfg=15 guibg=#990000 ctermbg=88
+hi WarningMsg guifg=#FFFFFF ctermfg=15 guibg=#990000 ctermbg=88
+hi Float guifg=#0000A2 ctermfg=19
+hi Function guifg=#0000A2 ctermfg=19 gui=bold
+hi Identifier guifg=#1E39F6 ctermfg=27 gui=bold
+hi Keyword guifg=#1E39F6 ctermfg=27 gui=bold
+hi Label guifg=#007B22 ctermfg=28
+hi Number guifg=#0000A2 ctermfg=19
+hi Operator guifg=#1E39F6 ctermfg=27 gui=bold
+hi PreProc guifg=#1E39F6 ctermfg=27 gui=bold
+hi Special guifg=#000000 ctermfg=0
+hi Statement guifg=#1E39F6 ctermfg=27 gui=bold
+hi StorageClass guifg=#1E39F6 ctermfg=27 gui=bold
+hi String guifg=#007B22 ctermfg=28
+hi Title guifg=#000000 ctermfg=0 gui=bold
+hi Todo guifg=#0066FF ctermfg=27 gui=inverse,bold,italic
+hi Underlined gui=underline
+
+" Invisible character colors
+hi NonText guifg=#DFDFDF ctermfg=253 guibg=#FFFFFF ctermbg=15
+hi SpecialKey guifg=#DFDFDF ctermfg=253 guibg=#FFFFFF ctermbg=15
+
+" Diff styles {{{1
+hi diffAdded guifg=#007B22 guibg=#FFFFFF ctermfg=28 ctermbg=15
+hi diffRemoved guifg=#D51015 guibg=#FFFFFF ctermfg=160 ctermbg=15
+hi diffFile guifg=#6E79F1 guibg=#FFFFFF ctermfg=69 ctermbg=15
+hi diffNewFile guifg=#6E79F1 guibg=#FFFFFF ctermfg=69 ctermbg=15
+hi diffLine guifg=#000000 guibg=#FFFFFF ctermfg=0 ctermbg=15
+
+hi diffAdd guifg=#007B22 guibg=#FFFFFF ctermfg=28 ctermbg=15
+hi diffChange guifg=#007B22 guibg=#FFFFFF ctermfg=28 ctermbg=15
+hi diffText guifg=#007B22 guibg=#FFFFFF ctermfg=28 ctermbg=15
+hi link diffDelete diffRemoved
+" Git styles {{{1
+hi gitcommitFirstLine guifg=#000000 guibg=#FFFFFF ctermfg=0 ctermbg=15
+hi gitcommitSelectedType guifg=#007B22 guibg=#FFFFFF ctermfg=28 ctermbg=15
+hi link gitcommitSelectedFile gitcommitSelectedType
+hi gitcommitDiscardedType guifg=#D51015 guibg=#FFFFFF ctermfg=160 ctermbg=15
+hi link gitcommitDiscardedFile gitcommitDiscardedType
+hi gitcommitUntrackedFile guifg=#6E79F1 guibg=#FFFFFF ctermfg=69 ctermbg=15
+" Ruby styles {{{1
+hi rubyClass guifg=#1E39F6 ctermfg=27 gui=bold
+hi rubyFunction guifg=#0000A2 ctermfg=19 gui=bold
+hi rubyInterpolationDelimiter guifg=#00BC41 ctermfg=35
+hi rubyInterpolation guifg=#00BC41 ctermfg=35
+hi rubySymbol guifg=#D51015 ctermfg=160 gui=bold
+hi rubyConstant guifg=#6E79F1 ctermfg=69 gui=bold
+hi rubyStringDelimiter guifg=#007B22 ctermfg=28
+hi rubyInstanceVariable guifg=#318495 ctermfg=66
+hi rubyInclude guifg=#1E39F6 ctermfg=27 gui=bold
+hi rubyGlobalVariable guifg=#318495 ctermfg=66
+hi rubyRegexp guifg=#E18AC7 ctermfg=176
+hi rubyRegexpAnchor guifg=#E18AC7 ctermfg=176
+hi rubyRegexpQuantifier guifg=#E18AC7 ctermfg=176
+hi rubyRegexpParens guifg=#E18AC7 ctermfg=176
+hi rubyRegexpEscape guifg=#00BC41 ctermfg=35
+hi rubyRegexpCharClass guifg=#00BC41 ctermfg=35
+hi rubyRegexpDelimiter guifg=#E18AC7 ctermfg=176
+hi rubyEscape guifg=#00BC41 ctermfg=35
+hi rubyControl guifg=#1E39F6 ctermfg=27 gui=bold
+hi rubyOperator guifg=#1E39F6 ctermfg=27 gui=bold
+hi rubyException guifg=#1E39F6 ctermfg=27 gui=bold
+hi rubyPseudoVariable guifg=#318495 ctermfg=66
+hi rubyRailsUserClass guifg=#6E79F1 ctermfg=69 gui=bold
+hi rubyRailsARAssociationMethod guifg=#3C4C72 ctermfg=240 gui=bold
+hi rubyRailsARMethod guifg=#3C4C72 ctermfg=240 gui=bold
+hi rubyRailsRenderMethod guifg=#3C4C72 ctermfg=240 gui=bold
+hi rubyRailsMethod guifg=#3C4C72 ctermfg=240 gui=bold
+hi link erubyComment Comment
+hi erubyRailsMethod guifg=#3C4C72 ctermfg=240 gui=bold
+
+" XML: {{{1
+hi link xmlEndTag xmlTag
+" HTML: {{{1
+hi htmlTag guifg=#1E39F6 ctermfg=27
+hi link htmlEndTag htmlTag
+hi link htmlTagName htmlTag
+hi link htmlArg htmlTag
+hi htmlSpecialChar guifg=#D51015 ctermfg=160 gui=bold
+hi htmlH1 gui=bold
+hi link htmlH2 htmlH1
+hi link htmlH3 htmlH1
+hi link htmlH4 htmlH1
+hi link htmlH5 htmlH1
+hi link htmlH6 htmlH1
+
+" JavaScript: {{{1
+hi javaScriptFunction guifg=#1E39F6 ctermfg=27 gui=bold
+hi javaScriptFuncName guifg=#318495 ctermfg=66 gui=italic
+hi javaScriptLabel guifg=#0000A2 ctermfg=19 gui=bold
+hi javaScriptRailsFunction guifg=#3C4C72 ctermfg=240 gui=bold
+hi javaScriptType guifg=#318495 ctermfg=66 gui=none
+hi javaScriptArgument guifg=#318495 ctermfg=66 gui=italic
+hi javaScriptRegexpString guifg=#E18AC7 ctermfg=176 gui=NONE
+hi javaScriptSpecial guifg=#00BC41 ctermfg=35 gui=NONE
+" NOTE: Syntax Highlighting for javascript doesn't match the
+" TextMate version very accurately, because the javascript
+" syntax file does not create matches for some items. In
+" particular:
+" * javaScriptArgument - e.g. function(argument)
+" * javaScriptFuncName for object literal style functions - e.g.:
+" myFunction: function() { ... }
+
+" YAML: {{{1
+hi yamlAnchor guifg=#318495 ctermfg=66
+hi yamlAlias guifg=#318495 ctermfg=66
+hi yamlDocumentHeader guibg=#F2F2F2 ctermbg=7
+
+" CSS: {{{1
+hi cssTagName gui=bold
+hi cssIdentifier gui=italic
+hi link cssClassName cssIdentifier
+hi cssDefinition guifg=#6E79F1 ctermfg=69
+hi link cssRenderProp cssDefinition
+hi link cssTextProp cssDefinition
+hi link cssFontProp cssDefinition
+hi link cssColorProp cssDefinition
+hi link cssBoxProp cssDefinition
+hi link cssGeneratedContentProp cssDefinition
+hi link cssUIProp cssDefinition
+hi cssCommonAttr guifg=#00BC41 ctermfg=35
+hi link cssAttr cssCommonAttr
+hi link cssRenderAttr cssCommonAttr
+hi link cssTextAttr cssCommonAttr
+hi link cssFontAttr cssCommonAttr
+hi link cssGeneratedContentAttr cssCommonAttr
+hi cssURL guifg=#007B22 ctermfg=28
+hi cssFunctionName guifg=#3C4C72 ctermfg=240 gui=bold
+hi cssColor guifg=#D51015 ctermfg=160 gui=bold
+hi cssValueLength guifg=#0000A2 ctermfg=19
+hi cssImportant guifg=#1E39F6 ctermfg=27 gui=bold
+
+" Vimscript: {{{1
+hi vimGroup guifg=#007B22 ctermfg=28 gui=bold
+hi link vimHiGroup vimGroup
+hi vimCommentTitle guifg=#3C4C72 ctermfg=240 gui=bold
+hi helpSpecial guifg=#6E79F1 ctermfg=69
+
+" Markdown: {{{1
+hi markdownBold gui=bold
+hi markdownItalic gui=italic
+hi markdownCode guifg=#007B22 ctermfg=28
+hi link markdownCodeBlock markdownCode
+
+" Outliner: {{{1
+hi BT1 guifg=#808080 ctermfg=244 gui=italic
+hi OL1 guifg=#000000 ctermfg=0 gui=bold
+hi OL2 guifg=#0000A2 ctermfg=19 gui=bold
+hi OL3 guifg=#007B22 ctermfg=28 gui=bold
+hi OL4 guifg=#6E79F1 ctermfg=69 gui=NONE
+" Modelines: {{{1
+" vim: nowrap fdm=marker
+" }}}
diff --git a/config/nvim/ftplugin/tex.vim b/config/nvim/ftplugin/tex.vim
new file mode 100644
index 0000000..e005eb1
--- /dev/null
+++ b/config/nvim/ftplugin/tex.vim
@@ -0,0 +1 @@
+nnoremap <buffer> <F6> :!build-latex.sh %<CR>
diff --git a/config/nvim/init.vim b/config/nvim/init.vim
new file mode 100644
index 0000000..000166a
--- /dev/null
+++ b/config/nvim/init.vim
@@ -0,0 +1,193 @@
+" NeoVim init.vim
+"
+" Differences with good ol' Vim:
+"
+" NeoVim has so many of the modern and helpful Vim options on by default. I'll
+" remove most of the old Vim configurations that now come by default in NeoVim.
+"
+" Also NeoVim uses XDG directories by default, keeping a clean directory tree.
+"
+" NeoVim also allows for this file to be written in Lua. I'll stick to using
+" Vim script becuase it has more documentation and is more concise configuring
+" Vim options.
+"
+" Instead of viminfo, NeoVim uses shada files (SHared DAta) (different format).
+" See shada-file-name.
+"
+" For some reason, as of version v0.8.3 of NeoVim, Vim internal codes for shift-
+" and control- function keys change in NeoVim. <S-F1> changes to <F13>, and
+" <C-F1> changes to <F25>. See https://github.com/neovim/neovim/issues/7384
+"
+" Plugins: There are a lot of ways to install "plug-in"s in Vim. My prefered
+" way is using Vim packages, available since Vim version 8. See packages.
+"
+" Tips:
+" * To show navigate help files:
+" K " while on an option to see it's documentation
+" CTRL-] " navigation while on a Vim help file
+" * To re-indent:
+" tab->spaces :set tabstop=n :set expandtab :retab
+" spaces->tab :set noexpandtab :set tabstop={softtabstop} :retab!
+" * To justify:
+" To 'justify' comments or block of text (paragraph) use `gq{motion}` or
+" `gp{motion}`, where {motion} can be `[/`, `]/`, `ip`, `i{`, `a{`.
+" * To see the last page of previous command:
+" `g<`
+" * Buffer stuff:
+" :ls " shows all buffers
+" :b N " Go to buffer N (integer)
+
+
+" Settings
+" ----------------------------------------------------------------------
+
+" Common
+colorscheme industry
+filetype plugin on
+
+" Command line:
+set cmdheight=1
+set wildmenu
+set wildignore+=*.o,.git,*.class
+set path+=./**30 " For gf and :find, add all subdirectories relative to
+ " current file (30 max) to the "search space"
+
+" Search
+set ignorecase
+set smartcase
+
+" Screen
+set nonumber
+set scrolloff=5 " show a few lines of context
+set colorcolumn=+1 " show ruler at position tabstop+1
+set laststatus=2
+" Add buffer number to the default status line with ruler
+set statusline=%<%f\ %h%m%r%=b%02n\ \ %-14.(%l,%c%V%)\ %P
+
+" TODO: move to ftplugin
+" TODO: create tags automatically (:!ctags -R . after :w if ft=c)
+" Tag Jumping
+" Instructions: create tag index (e.g. $ ctags -R .)
+" place cursor on tag
+" ^] to jump to definition
+" g^] if more than 1 definition
+" ^T to return (or ^O)
+
+"set cindent
+"set cinoptions=:0,g0 " See C-indenting
+
+
+" Indentation: 4 spaces
+" See also: autoindent, smartindent, cindent, indentexpr
+set tabstop=4 " Each '\t' takes 8 virtual (screen) columns
+set shiftwidth=0 " (Auto)indentation. Also affects: >>, i_C-T, i_C-D
+set expandtab " Expand inserted <Tab>s with <Space>
+set smartindent " Smart indenting when starting a new line
+
+" Formatting: See fo-table
+set formatoptions+=t " auto-wrap text (when inserting)
+set formatoptions+=c " auto-wrap comments (when inserting)
+set formatoptions+=q " Allow formatting of comments with "gq"
+set formatoptions+=j " Removes comment leader when joining lines
+set formatoptions+=l " Don't break long lines that are already typed
+set formatoptions+=r " Insert current leader after <Enter> in Insert mode
+set formatoptions+=p " Don't break honorifics like Prof. Smith
+set formatoptions+=n " Recognize numbered lists
+set formatoptions+=o " Automatically insert the current comment
+ " leader after `o`.
+
+" Wrap: Auto-break lines longer than 80 colums
+set textwidth=80
+set wrap
+set linebreak " Don't break words
+
+" Mouse
+set mouse=a " Enable mouse for all modes
+
+" Buffers
+set hidden " Allow for hidden modified buffers
+
+" Split
+set splitbelow splitright
+
+
+" Mappings
+" ----------------------------------------------------------------------
+
+let $VIMFILES = split(&rtp, ",")[0]
+
+map <F5> :source $VIMFILES/init.vim<CR>
+map <F17> :e $VIMFILES/init.vim<CR>
+
+map <F7> :tabp<CR>
+map <F8> :tabn<CR>
+map <F19> :bNext<LF>
+map <F20> :bnext<LF>
+
+" TODO: move to ftplugin
+" C/C++ Programming:
+map <F6> :w<CR>:!clear && make<CR>
+"map <F10> :!./%:r<CR>
+"map <F10> :!./a.out<CR>
+map <F11> :cnext<CR>
+map <S-F11> :cprev<CR>
+" "Run cTags"
+map <Leader>rt :!ctags -R .<CR>
+map <C-\> :tnext<CR>
+" Motion to go to beggining of function while cursor is inside
+nmap [f [m[{k0
+
+" pandoc (& website):
+nnoremap mm :w<CR>:Md2Html<CR><CR><CR>
+nmap mM mm:!updatewebsite_zaz<CR><CR>
+
+" asciidoctor:
+nnoremap ma :w<CR>:!asciidoctor %<CR><CR>
+nmap mA ma:!updatewebsite_zaz<CR><CR>
+
+" Funcionallity of the following depends on terminal emulator. Needs 8-bit
+" input enabled
+" for <Meta> = Alt key combos
+" From: https://vim.fandom.com/wiki/Get_Alt_key_to_work_in_terminal
+nmap <M-H> <C-W>h
+nmap <M-J> <C-W>j
+nmap <M-K> <C-W>k
+nmap <M-L> <C-W>l
+
+" Go Title Case (and clear highlighted matches)
+" Ref.: https://vim.fandom.com
+vmap gt :s/\<\(\w\)\(\w*\)\>/\u\1\L\2/g<CR><C-L>
+
+" Autoformat JSON jumbled data
+" Ref.: https://stackoverflow.com/questions/26214156/how-to-auto-format-json-on-save-in-vim
+nnoremap gJ :%!python3 -m json.tool<CR>
+
+" Replaces previous WORD arithmetic expression with result (from Vim
+" fandom-wiki)
+inoremap <C-A> <Esc>diWi<C-R>=<C-R>"<CR>
+
+
+" Views and Sessions (Window layout and Line folding)
+" ----------------------------------------------------------------------
+" It is possible to create folds automatically but idk how to do it.
+" :mkview so save them :loadview to load them (zo open one, zc close one,
+" zR to open all, zM to close all, zx to restore))
+
+" Views saves folds. Sessions saves all windows configuration and layout
+" Load Sessions with $ vim -S Session.vim
+
+" To automatically save and restore views for *.c *.cpp files:
+"au BufWinLeave *.c mkview
+"au BufWinEnter *.c silent loadview
+"au BufWinLeave *.cpp mkview
+"au BufWinEnter *.cpp silent loadview
+
+
+" Playground
+" ----------
+"autocmd FileType tex nnoremap <buffer> <F6> :!./build.sh %<CR>
+
+"augroup TeX
+" autocmd!
+" autocmd BufWritePost *.tex !./build.sh %
+"augroup END
diff --git a/config/nvim/pack/mitsuo/Readme.txt b/config/nvim/pack/mitsuo/Readme.txt
new file mode 100644
index 0000000..a9e88cd
--- /dev/null
+++ b/config/nvim/pack/mitsuo/Readme.txt
@@ -0,0 +1 @@
+Vim plugins I use go here.
diff --git a/config/nvim/pack/mitsuo/start/fun/Readme.txt b/config/nvim/pack/mitsuo/start/fun/Readme.txt
new file mode 100644
index 0000000..2f41d59
--- /dev/null
+++ b/config/nvim/pack/mitsuo/start/fun/Readme.txt
@@ -0,0 +1 @@
+My special functions :)
diff --git a/config/nvim/pack/mitsuo/start/fun/plugin/fun.vim b/config/nvim/pack/mitsuo/start/fun/plugin/fun.vim
new file mode 100644
index 0000000..c992f93
--- /dev/null
+++ b/config/nvim/pack/mitsuo/start/fun/plugin/fun.vim
@@ -0,0 +1,121 @@
+" To call functions use `:call foo()`
+
+" Echoes longest line number and lenght.
+function! LongestLineLength ( )
+ let maxlength = 0
+ let linenumber= 1
+ while linenumber <= line("$")
+ exe ":".linenumber
+ let linelength = virtcol("$")
+ if maxlength < linelength
+ let maxlength = linelength
+ let maxlinenumber = linenumber
+ endif
+ let linenumber = linenumber+1
+ endwhile
+
+"exe ':0'
+"exe 'normal O'
+"exe 'normal 0C'.maxlength
+ exe "normal" . maxlinenumber . "G"
+ exe ":echo \"" . maxlinenumber . ": " . maxlength . "\""
+endfunction
+
+command LongestLineLength call LongestLineLength()
+
+
+" Save markdown document and export to pdf using pandoc.
+"
+" It would be nicer if a default document would be used but I coulnd't made it
+" to work even after reading that manual section like 2 times. Also, there are
+" variables that are lists of other variables that I don't know how to make them
+" work (e.g. geometry=[top=1in, bottom=1in, heightrounded])
+function! Md2Pdf ( )
+ exe ":w"
+ "-N for numbered headers
+ exe ":! pandoc -o \"" . expand("%:r") . ".pdf\" -t latex --variable classoption=twosides --variable papersize=a4 --variable margin-left=1in --variable margin-right=1in --variable margin-top=1in --variable margin-bottom=1in --variable links-as-notes --variable colorlinks --variable pagestyle=plain --variable documentclass=article -f markdown-implicit_figures \"" . expand("%") . "\""
+ echo "pdf saved as \"" . expand("%:p:r") . ".pdf\""
+endfunction
+
+function! Md2Pdfms ( )
+ exe ":w"
+ exe ":! pandoc -o " . expand("%:r") . ".pdf" . " -t ms -f markdown-implicit_figures \"" . expand("%") . "\""
+ echo "pdf saved as " . expand("%:p:r") . ".pdf"
+endfunction
+
+command Md2Pdf call Md2Pdf()
+command Md2Pdfms call Md2Pdfms()
+
+
+" Save markdown document and export to html using pandoc
+function! Md2Html ( )
+ exe ":w"
+ "exe ":! pandoc -s --toc -H ~/mahcode/markdown/pandoc/pandoc_style.html --highlight-style tango -o \"" . expand("%:r") . ".html\"" . " \"" . expand("%") . "\""
+ exe ":! pandoc --highlight-style tango -o \"" . expand("%:r") . ".html\"" . " \"" . expand("%") . "\""
+ echo "html saved as " . expand("%:p:r") . ".html"
+endfunction
+
+command Md2Html call Md2Html()
+
+" Save markdown as ODT file (.docx is also possible)
+function! Md2Odt ( )
+ exe ":w"
+ exe ":! pandoc -s --toc -H ~/mahcode/markdown/pandoc/pandoc_style.html --highlight-style tango -o \"" . expand("%:r") . ".odt\"" . " \"" . expand("%") . "\""
+ echo "ODT saved as " . expand("%:p:r") . ".odt"
+endfunction
+
+command Md2Odt call Md2Odt()
+
+
+" Compiles and Runs a C++ project
+" TODO: how to add program's arguments or file redirectioning from command.
+function! CompRunProj ( )
+ exe ":w"
+ exe ":! g++ -o " . expand("%:r") . "-g *.cpp"
+ exe ":! ./" . expand("%:r")
+endfunction
+
+command CompRunProj call CompRunProj()
+
+
+" Function made to give feedback to students code in 1INF01
+" export C code to syntax highlighted pdf
+function! C2Pdf ( )
+ exe ":set ts=4"
+ exe ":w"
+ exe ":ha > %.ps"
+ exe ":!ps2pdf %.ps"
+ exe ":!rm %.ps"
+endfunction
+
+
+" For printing first export to html and then print using web browser
+" Ref.: https://vi.stackexchange.com/questions/12058/printing-unicode-chars
+function! ExportHTML (colorscheme="quiet", bg="light")
+ " Nice colorschemes for printing on paper: quiet, morning, mac_classic
+ let s:prev_color = g:colors_name
+ let s:prev_bg = &background
+ exe "colorscheme" a:colorscheme
+ exe "set bg=" . a:bg
+
+ exe "TOhtml | w | !xdg-open %"
+ echo "html export saved as " . expand('%:p')
+ exe "bd"
+
+ exe "colorscheme" s:prev_color
+ exe "set bg=" . s:prev_bg
+endfunction
+
+command ExportHTML call ExportHTML()
+
+" C++
+" Formatting
+" Ref.: https://clang.llvm.org/docs/ClangFormat.html
+map <C-K> :pyf /usr/share/clang/clang-format.py<cr>
+"imap <C-K> <c-o>:py3f /usr/share/clang/clang-format.py<cr>
+
+"function! Formatonsave()
+" let l:formatdiff = 1
+" pyf /usr/share/clang/clang-format.py
+"endfunction
+"autocmd BufWritePre *.h,*.hpp,*.cc,*.cpp call Formatonsave()
diff --git a/config/nvim/pack/mitsuo/start/vim-commentary b/config/nvim/pack/mitsuo/start/vim-commentary
new file mode 160000
+Subproject e87cd90dc09c2a203e13af9704bd0ef79303d75
diff --git a/config/pandoc/linuxcolors_style.html b/config/pandoc/linuxcolors_style.html
new file mode 100644
index 0000000..e050698
--- /dev/null
+++ b/config/pandoc/linuxcolors_style.html
@@ -0,0 +1,188 @@
+<style type="text/css">
+:root {
+ /* Linux Colors (Konsole)
+ ()normal, (I)ntense, (F)aint
+
+ https://kernel.org
+ */
+
+ --color1: rgb(0, 0, 0); /* background */
+ --color2: rgb(178, 24, 24); /* red */
+ --color3: rgb(24, 178, 24); /* green */
+ --color4: rgb(178, 104, 24); /* yellow */
+ --color5: rgb(24, 24, 178); /* blue */
+ --color6: rgb(178, 24, 178); /* magenta */
+ --color7: rgb(24, 178, 178); /* cyan */
+ --color8: rgb(178, 178, 178); /* foreground */
+
+ --color1I: rgb(104, 104, 104);
+ --color2I: rgb(255, 84, 84);
+ --color3I: rgb(84, 255, 84);
+ --color4I: rgb(255, 255, 84);
+ --color5I: rgb(84, 84, 255);
+ --color6I: rgb(255, 84, 255);
+ --color7I: rgb(84, 255, 255);
+ --color8I: rgb(255, 255, 255);
+
+ --color1F: rgb(0, 0, 0);
+ --color2F: rgb(101, 0, 0);
+ --color3F: rgb(0, 101, 0);
+ --color4F: rgb(101, 94, 0);
+ --color5F: rgb(0, 0, 101);
+ --color6F: rgb(101, 0, 101);
+ --color7F: rgb(0, 101, 101);
+ --color8F: rgb(101, 101, 101);
+
+ /*
+ previously (h1-5):
+ - navy
+ - navy
+ - royalblue
+ - steelblue
+ - skyblue
+ */
+}
+html {
+ font-size: 1em; /* (use browser's default, usually 16px) */
+}
+body {
+ margin: auto;
+ padding-right: 1em;
+ padding-left: 1em;
+ max-width: 44em;
+ min-width: 44em; /* test different values */
+ overflow: auto;
+
+ border-left: 1px solid black;
+ border-right: 1px solid black;
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 140%;
+ color: var(--color8);
+ background-color: var(--color1);
+}
+pre {
+ /* "wrapper" for code element */
+ border: 1px solid var(--color8);
+ padding: 0.25em;
+ overflow: auto;
+ font-family: monospace;
+ /* 1.2 em relative to what? What size of M? I've no idea */
+ font-size: 1.1em;
+ line-height: 1.1em;
+}
+code {
+ /* wraps around the lines of code, or something like that. I'm not sure
+ what is it's function
+ */
+ /* somewhere in pandoc, this element get's white-space: pre-wrap, which
+ wraps code that doesn't fit in parent element. So I need to overwrite
+ that setting here. Now the contents overflow, and a scrollbar is
+ automatically enabled
+ */
+ white-space: pre;
+}
+/* Definition List <dl>, Definition Title <dt>, Definition Description <dd> */
+dt {
+ font-weight: bold;
+}
+dd p {
+ margin-top: 0;
+}
+blockquote {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ margin-left: 5px;
+ padding-left: 15px;
+ border-left: 3px solid #ccc;
+}
+h1, h2, h3, h4, h5 {
+ /* headers use serif font */
+ /*font-weight: bold;*/
+ font-family: Verdana, serif;
+}
+
+h1 {
+ /* inspiration: htop table header
+ use: chapter begin
+ */
+ font-size: 180%;
+ color: var(--color1);
+ background-color: var(--color3);
+ padding: 0.1em;
+}
+
+h2 {
+ /* inspiration: Wikipedia section
+ use: section begin
+ */
+ font-size: 160%;
+
+ color: var(--color8I);
+ border-bottom: 1px solid;
+}
+
+h3 {
+ /* inspiration: man page header
+ use: subsection
+ */
+ font-size: 140%;
+
+ color: var(--color8I);
+ /* UPPERCASE afecta mucho el tamaño :( */
+ /*text-transform: uppercase;*/
+}
+
+h4 {
+ /* inspiration: man page sub-header
+ use: subsection
+ */
+ font-size: 120%;
+ color: var(--color8I);
+}
+
+h5 {
+ /* inspiration: man page sub-header
+ use: subsection
+ */
+ font-size: 100%;
+ /*font-style: italic;*/
+ color: var(--color8I);
+}
+
+h1.title {
+ font-size: 200%;
+ line-height: 110%;
+ font-weight: bold;
+
+ color: var(--color1);
+ background-color: var(--color3);
+
+ border: none;
+
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ text-align: center;
+}
+
+p.author, p.date {
+ text-align: center;
+}
+
+:any-link {
+ color: var(--color8);
+ text-decoration: underline;
+}
+
+#footer {
+ padding-top: 1em;
+ font-size: 70%;
+ color: gray;
+ text-align: center;
+}
+
+/* maybe fix this, make more dynamic */
+img {
+ max-width: 40em;
+}
+</style>
diff --git a/config/ssh/Readme.txt b/config/ssh/Readme.txt
new file mode 100644
index 0000000..c902d49
--- /dev/null
+++ b/config/ssh/Readme.txt
@@ -0,0 +1,8 @@
+important considerations for ssh:
+- Change port to other than default (specially if exposed)
+- Rate limit SSH traffic with a firewall (e.g., ufw)
+- Disable password authentication (use RSA)
+- Disable root login
+
+sshd_config goes to /etc/sshd_config in ArchLinux
+config goes to ~/.ssh/config
diff --git a/config/ssh/config b/config/ssh/config
new file mode 100644
index 0000000..7979b64
--- /dev/null
+++ b/config/ssh/config
@@ -0,0 +1,9 @@
+# global options
+#User admin
+
+# host-specific options
+Host example.com
+ Hostname 123.123.123.123
+ #Port 22
+ User pocoyo
+ #IdentityFile ~/path/to/key
diff --git a/config/ssh/sshd_config b/config/ssh/sshd_config
new file mode 100644
index 0000000..1e8358e
--- /dev/null
+++ b/config/ssh/sshd_config
@@ -0,0 +1,117 @@
+# $OpenBSD: sshd_config,v 1.104 2021/07/02 05:11:21 dtucker Exp $
+
+# This is the sshd server system-wide configuration file. See
+# sshd_config(5) for more information.
+
+# This sshd was compiled with PATH=/usr/local/sbin:/usr/local/bin:/usr/bin
+
+# The strategy used for options in the default sshd_config shipped with
+# OpenSSH is to specify options with their default value where
+# possible, but leave them commented. Uncommented options override the
+# default value.
+
+Port 22 # set a custom port
+#AddressFamily any
+#ListenAddress 0.0.0.0
+#ListenAddress ::
+
+#HostKey /etc/ssh/ssh_host_rsa_key
+#HostKey /etc/ssh/ssh_host_ecdsa_key
+#HostKey /etc/ssh/ssh_host_ed25519_key
+
+# Ciphers and keying
+#RekeyLimit default none
+
+# Logging
+#SyslogFacility AUTH
+#LogLevel INFO
+
+# Authentication:
+
+#LoginGraceTime 2m
+#PermitRootLogin prohibit-password
+PermitRootLogin no
+#StrictModes yes
+#MaxAuthTries 6
+#MaxSessions 10
+
+#PubkeyAuthentication yes
+
+# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
+# but this is overridden so installations will only check .ssh/authorized_keys
+AuthorizedKeysFile .ssh/authorized_keys
+
+#AuthorizedPrincipalsFile none
+
+#AuthorizedKeysCommand none
+#AuthorizedKeysCommandUser nobody
+
+# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
+#HostbasedAuthentication no
+# Change to yes if you don't trust ~/.ssh/known_hosts for
+# HostbasedAuthentication
+#IgnoreUserKnownHosts no
+# Don't read the user's ~/.rhosts and ~/.shosts files
+#IgnoreRhosts yes
+
+# To disable tunneled clear text passwords, change to no here!
+PasswordAuthentication no
+#PermitEmptyPasswords no
+
+# Change to no to disable s/key passwords
+KbdInteractiveAuthentication no
+
+# Kerberos options
+#KerberosAuthentication no
+#KerberosOrLocalPasswd yes
+#KerberosTicketCleanup yes
+#KerberosGetAFSToken no
+
+# GSSAPI options
+#GSSAPIAuthentication no
+#GSSAPICleanupCredentials yes
+
+# Set this to 'yes' to enable PAM authentication, account processing,
+# and session processing. If this is enabled, PAM authentication will
+# be allowed through the KbdInteractiveAuthentication and
+# PasswordAuthentication. Depending on your PAM configuration,
+# PAM authentication via KbdInteractiveAuthentication may bypass
+# the setting of "PermitRootLogin without-password".
+# If you just want the PAM account and session checks to run without
+# PAM authentication, then enable this but set PasswordAuthentication
+# and KbdInteractiveAuthentication to 'no'.
+UsePAM yes
+
+#AllowAgentForwarding yes
+#AllowTcpForwarding yes
+#GatewayPorts no
+#X11Forwarding no
+#X11DisplayOffset 10
+#X11UseLocalhost yes
+#PermitTTY yes
+PrintMotd no # pam does that
+#PrintLastLog yes
+#TCPKeepAlive yes
+#PermitUserEnvironment no
+#Compression delayed
+#ClientAliveInterval 0
+#ClientAliveCountMax 3
+#UseDNS no
+#PidFile /run/sshd.pid
+#MaxStartups 10:30:100
+#PermitTunnel no
+#ChrootDirectory none
+#VersionAddendum none
+
+# no default banner path
+#Banner none
+
+# override default of no subsystems
+Subsystem sftp /usr/lib/ssh/sftp-server
+
+# Example of overriding settings on a per-user basis
+#Match User anoncvs
+# X11Forwarding no
+# AllowTcpForwarding no
+# PermitTTY no
+# ForceCommand cvs server
diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf
new file mode 100644
index 0000000..b171190
--- /dev/null
+++ b/config/tmux/tmux.conf
@@ -0,0 +1,63 @@
+# Minimal tmux config
+# Ref.: https://thevaluable.dev/tmux-config-mouseless/
+
+# remap prefix from 'C-b' to 'C-a'
+set-option -g prefix C-a
+bind-key C-a send-prefix
+unbind C-b
+
+# Start window numbering at 1
+set -g base-index 1
+setw -g pane-base-index 1
+
+# Navigate history with vi keybindings
+set-window-option -g mode-keys vi
+set -g history-limit 10000
+
+# From NeoVim advice:
+# Fix 'escape-time' from 500ms to 10ms (better experience in Vim)
+set-option -sg escape-time 10
+# focus-events (idk what this does)
+set-option -g focus-events on
+
+# Vim friendly tmux config
+# Ref.: https://gist.github.com/Lartza/6a7a62466a8a3e436234412d9b1c5066
+
+setw -g monitor-activity on
+set -g visual-activity on
+
+# FIXME: https://unix.stackexchange.com/a/131187/347754
+# y and p as in vim
+bind Escape copy-mode
+unbind p
+bind p paste-buffer
+bind-key -T copy-mode-vi 'v' send -X begin-selection
+bind-key -T copy-mode-vi 'y' send -X copy-selection
+#bind-key -T copy-mode-vi 'Space' send -X halfpage-down
+#bind-key -T copy-mode-vi 'Bspace' send -X halfpage-up
+
+# extra commands for interacting with the ICCCM clipboard
+#bind C-c run "tmux save-buffer - | xclip -i -sel clipboard"
+#bind C-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"
+
+# easy-to-remember split pane commands
+#bind | split-window -h
+#bind - split-window -v
+#unbind '"'
+#unbind %
+
+# moving between panes with vim movement keys
+bind h select-pane -L
+bind j select-pane -D
+bind k select-pane -U
+bind l select-pane -R
+
+# moving between windows with vim movement keys
+bind -r C-h select-window -t :-
+bind -r C-l select-window -t :+
+
+# resize panes with vim movement keys
+bind -r H resize-pane -L 5
+bind -r J resize-pane -D 5
+bind -r K resize-pane -U 5
+bind -r L resize-pane -R 5
diff --git a/config/vim/fun.vim b/config/vim/fun.vim
new file mode 100644
index 0000000..bd911f9
--- /dev/null
+++ b/config/vim/fun.vim
@@ -0,0 +1,89 @@
+" Echoes longest line number and lenght.
+function! LongestLineLength ( )
+ let maxlength = 0
+ let linenumber= 1
+ while linenumber <= line("$")
+ exe ":".linenumber
+ let linelength = virtcol("$")
+ if maxlength < linelength
+ let maxlength = linelength
+ let maxlinenumber = linenumber
+ endif
+ let linenumber = linenumber+1
+ endwhile
+
+"exe ':0'
+"exe 'normal O'
+"exe 'normal 0C'.maxlength
+ exe "normal" . maxlinenumber . "G"
+ exe ":echo \"" . maxlinenumber . ": " . maxlength . "\""
+endfunction
+
+command LongestLineLength call LongestLineLength()
+
+
+" Save markdown document and export to pdf using pandoc.
+"
+" It would be nicer if a default document would be used but I coulnd't made it
+" to work even after reading that manual section like 2 times. Also, there are
+" variables that are lists of other variables that I don't know how to make them
+" work (e.g. geometry=[top=1in, bottom=1in, heightrounded])
+function! Md2Pdf ( )
+ exe ":w"
+ "-N for numbered headers
+ exe ":! pandoc -o \"" . expand("%:r") . ".pdf\" -t latex --variable classoption=twosides --variable papersize=a4 --variable margin-left=1in --variable margin-right=1in --variable margin-top=1in --variable margin-bottom=1in --variable links-as-notes --variable colorlinks --variable pagestyle=plain --variable documentclass=article -f markdown-implicit_figures \"" . expand("%") . "\""
+ echo "pdf saved as \"" . expand("%:p:r") . ".pdf\""
+endfunction
+
+function! Md2Pdfms ( )
+ exe ":w"
+ exe ":! pandoc -o " . expand("%:r") . ".pdf" . " -t ms -f markdown-implicit_figures \"" . expand("%") . "\""
+ echo "pdf saved as " . expand("%:p:r") . ".pdf"
+endfunction
+
+command Md2Pdf call Md2Pdf()
+command Md2Pdfms call Md2Pdfms()
+
+
+" Save markdown document and export to html using pandoc
+function! Md2Html ( )
+ exe ":w"
+ "exe ":! pandoc -s --toc -H ~/mahcode/markdown/pandoc/pandoc_style.html --highlight-style tango -o \"" . expand("%:r") . ".html\"" . " \"" . expand("%") . "\""
+ exe ":! pandoc --highlight-style tango -o \"" . expand("%:r") . ".html\"" . " \"" . expand("%") . "\""
+ echo "html saved as " . expand("%:p:r") . ".html"
+endfunction
+
+command Md2Html call Md2Html()
+
+" Save markdown as ODT file (.docx is also possible)
+function! Md2Odt ( )
+ exe ":w"
+ exe ":! pandoc -s --toc -H ~/mahcode/markdown/pandoc/pandoc_style.html --highlight-style tango -o \"" . expand("%:r") . ".odt\"" . " \"" . expand("%") . "\""
+ echo "ODT saved as " . expand("%:p:r") . ".odt"
+endfunction
+
+command Md2Odt call Md2Odt()
+
+
+" Compiles and Runs a C++ project
+" TODO: how to add program's arguments or file redirectioning from command.
+function! CompRunProj ( )
+ exe ":w"
+ exe ":! g++ -o " . expand("%:r") . "-g *.cpp"
+ exe ":! ./" . expand("%:r")
+endfunction
+
+command CompRunProj call CompRunProj()
+
+
+" Function made to give feedback to students code in 1INF01
+" export C code to syntax highlighted pdf
+function! C2Pdf ( )
+ exe ":set ts=4"
+ exe ":w"
+ exe ":ha > %.ps"
+ exe ":!ps2pdf %.ps"
+ exe ":!rm %.ps"
+endfunction
+
+command C2Pdf call C2Pdf()
diff --git a/config/vim/pack/mitsuo/README.md b/config/vim/pack/mitsuo/README.md
new file mode 100644
index 0000000..172c269
--- /dev/null
+++ b/config/vim/pack/mitsuo/README.md
@@ -0,0 +1,12 @@
+Plugins I usually use and work fine together.
+
+- [NERDTree](https://github.com/preservim/nerdtree)
+
+ <C-t>
+
+- [vim-fugitive](https://github.com/tpope/vim-fugitive)
+
+ :G
+ :G blame
+
+Vim packages (version >= 8.2). See `:h packages`
diff --git a/config/vim/pack/mitsuo/nerdtree b/config/vim/pack/mitsuo/nerdtree
new file mode 160000
+Subproject eed488b1cd1867bd25f19f90e10440c5cc7d642
diff --git a/config/vim/pack/mitsuo/vim-fugitive b/config/vim/pack/mitsuo/vim-fugitive
new file mode 160000
+Subproject b7287bd5421da62986d9abf9131509b2c9f918e
diff --git a/config/vim/viminfo b/config/vim/viminfo
new file mode 100644
index 0000000..7651f85
--- /dev/null
+++ b/config/vim/viminfo
@@ -0,0 +1,31 @@
+# This viminfo file was generated by Vim 8.2.
+# You may edit it if you're careful!
+
+# Viminfo version
+|1,4
+
+# Value of 'encoding' when this file was written
+*encoding=utf-8
+
+
+# hlsearch on (H) or off (h):
+~h
+# Command Line History (newest to oldest):
+:q
+|2,0,1649356827,,"q"
+
+# Search String History (newest to oldest):
+
+# Expression History (newest to oldest):
+
+# Input Line History (newest to oldest):
+
+# Debug Line History (newest to oldest):
+
+# Registers:
+
+# File marks:
+
+# Jumplist (newest first):
+
+# History of marks within files (newest to oldest):
diff --git a/config/vim/vimrc b/config/vim/vimrc
new file mode 100644
index 0000000..f97a654
--- /dev/null
+++ b/config/vim/vimrc
@@ -0,0 +1,332 @@
+" mitsuo's vimrc
+" Created c. 2019-11-11
+" Last update (after destroying it accidentally): 2020-09-02
+"
+" ┌─┬─┬─┬─┬─┬─┐
+" │m│i│t│s│u│o│✓x け が
+" ├─┼─┼─┼─┼─┼─┤ ん
+" │v│i│m│r│c│←│█▓▒░ り ば
+" └─┴─┴─┴─┴─┴─┘ こ れ
+
+" XDG compliant REMOVED :D (what a pain)
+" - For new installs just copy (or link) this file into ~/.vimrc and create
+" the ~/.vim directory
+" TODO: - sort sections
+
+
+" Variables
+" ----------------------------------------------------------------------
+" Get the first directory from the list in $VIMRUNTIMEPATH
+let $VIMFILES=split(&rtp,",")[0]
+set undodir=$VIMFILES/undo
+set viewdir=$VIMFILES/view
+set directory=$VIMFILES/swap
+set viminfofile=$VIMFILES/viminfo
+
+
+" Useful
+" ----------------------------------------------------------------------
+set nocompatible
+" Auto-recognize files and apply pluggins
+filetype plugin indent on " See :h vimrc-filetype
+syntax on
+
+" Search files
+set wildmenu " command-line <Tab> completion <-- soo good
+set wildignore+=*.o,*.obj,.git,*.rbc,*.class
+set path+=./**30 " For gf and :find, add all subdirectories relative to
+ " current file (30 max) to the "search space"
+
+set scrolloff=5 " show a few lines of context
+
+set backspace=indent,eol,start " Allow <BS> and <Del> in insert mode
+
+" number gutter
+set nonumber
+set norelativenumber
+
+" Store session information
+set viminfo+='1000
+
+" Tag Jumping <-- so cool
+" Instructions: create tag index (e.g. $ ctags -R .)
+" place cursor on tag
+" ^] to jump to definition
+" g^] if more than 1 definition
+" ^T to return (or ^O)
+" TODO: create tags automatically (:!ctags -R . after :w if ft=c)
+
+
+" Status line
+" ----------------------------------------------------------------------
+set showcmd " show partial command on last line (below status bar)
+" just add buffer number to the default
+set statusline=%<%f\ %h%m%r%=b%02n\ \ %-14.(%l,%c%V%)\ %P
+
+
+" Search
+" ----------------------------------------------------------------------
+set hlsearch " highlight search (this can be annoying if no shortcut to then
+ " clear the highlight
+set incsearch " Incrementally move cursor while typing search-string
+" stop highlight only for current search.
+" (Still preserve <C-L> updating directory in netrw)
+nnoremap <C-L> :nohl<CR><C-L>
+" Ignore case only when pattern is lowercase (both needed)
+set ignorecase
+set smartcase
+
+
+" Indentation
+" ----------------------------------------------------------------------
+" 4 column softtabs (uses ' ', not '\t').
+" TODO: move this 'guide' to somewhere apropiate
+" tab->softtab :set tabstop=n :set expandtab :retab
+" softtab->tab :set noexpandtab :set tabstop={softtabstop} :retab!
+" Caution:
+" - This will insert a tab wherever it can, even between words
+" separated by as few as 2 spaces if ts=2!
+" - Not recommended at all. Use some other program to only translate
+" leading indenting from space to tabs. Also using tabs is not very
+" good. My opinion is that they are good as a special character to
+" separate data (like comma for CSV).
+set tabstop=8 " '\t' or HT = 8 virtual columns
+set shiftwidth=4 " Indentation with >> and C-T and C-D (insert mode)
+set softtabstop=4 " For "inserted tabs" (inserts <Space> and <Tab>
+ " minimizing <Space>)
+set expandtab " Expand with <Space> the inserted <Tab>s
+"set smarttab " Use shiftwidth for inserted <Tabs> in the front of
+ " a line (Maybe useful for YAML)
+" autoindent -> smartindent -> cindent -> indentexpr
+" (from simple/less general to complex/more general)
+set smartindent " This is a really nice and simple one
+"set cindent
+"set cinoptions=:0,g0 " See C-indenting
+
+
+" Automatic formatting
+" ----------------------------------------------------------------------
+" see fo-table
+set formatoptions=l " Don't break long lines that are already typed
+set formatoptions+=q " Allow formatting of comments with "gq"
+set formatoptions+=r " Insert current leader after <Enter> in Insert mode
+set formatoptions-=o " Automatically insert the current comment leader
+ " after hitting 'o'.
+set formatoptions+=t " auto-wrap text (when inserting)
+set formatoptions+=c " auto-wrap comments (when inserting)
+set formatoptions+=p " Don't break honorifics like Prof. Smith
+set formatoptions+=n " Allow lists
+set formatoptions+=j " Removes comment leader when joining lines
+
+
+" Word wrap
+" ----------------------------------------------------------------------
+set wrap " Visual wrapping of lines wider than window
+set linebreak " Works with previous option to not break words
+" To 'justify' comments or block of text (paragraph) use "gq{motion}" or
+" "gp{motion}", where {motion} can be "[/", "]/", "ip", "i{", "a{".
+set textwidth=80 " auto break inserted text longer than 80 colums
+
+
+" Other settings
+" ----------------------------------------------------------------------
+set mouse=a " Enable for all modes
+" set cmdheight=1
+" Always display the status line, even if only one window is displayed
+set laststatus=2
+set ruler
+set encoding=utf-8
+set more " Enable more-prompt for listings that don't fit in
+ " screen
+"hint: g< command can be used to see the last page of previous command.
+
+
+" Mappings
+" ----------------------------------------------------------------------
+" F1 is help, F11 is full screen (terminal emulator)
+map <F5> :source $VIMFILES/vimrc<CR>
+map <S-F5> :e $VIMFILES/vimrc<CR>
+
+map <F7> :tabp<CR>
+map <F8> :tabn<CR>
+
+" C/C++ Programming:
+
+map <F6> :w<CR>:!clear && make<CR>
+"map <F10> :!./%:r<CR>
+"map <F10> :!./a.out<CR>
+
+map <F11> :cnext<CR>
+map <S-F11> :cprev<CR>
+
+" <Leader> = '\' when 'mapleader' is empty
+" "Run cTags"
+map <Leader>rt :!ctags -R .<CR>
+map <C-\> :tnext<CR>
+
+" Motion to go to beggining of function while cursor is inside
+nmap [f [m[{k0
+
+" Other programs:
+
+" pandoc (& website)
+nnoremap mm :w<CR>:Md2Html<CR><CR><CR>
+nmap mM mm:!updatewebsite_zaz<CR><CR>
+" asciidoc
+nnoremap ma :w<CR>:!asciidoctor %<CR><CR>
+nmap mA ma:!updatewebsite_zaz<CR><CR>
+
+" Funcionallity of the following depends on terminal. Needs 8bit input enabled
+" for <Meta> = Alt key combos
+" From: https://vim.fandom.com/wiki/Get_Alt_key_to_work_in_terminal
+
+nmap <M-H> <C-W>h
+nmap <M-J> <C-W>j
+nmap <M-K> <C-W>k
+nmap <M-L> <C-W>l
+
+" Misc.:
+
+" Go Title Case (and clear highlighted matches)
+" Ref.: vim.fandom.com
+vmap gt :s/\<\(\w\)\(\w*\)\>/\u\1\L\2/g<CR><C-L>
+
+" Autoformat JSON jumbled data. (Selects the whole file as range to pass as
+" standard input to `jq .` which pretty prints JSON. Then replace range with
+" output.)
+" Ref.: https://stackoverflow.com/questions/26214156/how-to-auto-format-json-on-save-in-vim
+nnoremap gJ :%!python3 -m json.tool<CR>
+" :%!jq .
+
+" NERDTree plugin
+nnoremap <C-t> :NERDTreeToggle<CR>
+
+" Comment/UnComment lines
+" Ref.:
+" - https://vim.fandom.com/wiki/Comment/UnComment_visually_selected_text
+" - https://stackoverflow.com/a/1676672/7498073
+" - https://stackoverflow.com/a/9051932/7498073
+au FileType haskell,vhdl,ada let b:comment_leader = '-- '
+au FileType vim let b:comment_leader = '" '
+au FileType c,cpp,java,asciidoc let b:comment_leader = '// '
+au FileType sh,make let b:comment_leader = '# '
+au FileType tex let b:comment_leader = '% '
+" That c_CTRL-R_= thingy enters the "expression register". And that \V
+" tells :s to go into "Very NonMagic" mode.
+noremap ,c :s/^/<C-R>=escape(b:comment_leader,'\/')<CR>/<CR>:noh<CR>
+noremap ,u :s/^\V<C-R>=escape(b:comment_leader,'\/')<CR>//e<CR>:noh<CR>
+
+
+" Yanking and pasting
+" ----------------------------------------------------------------------
+" TODO: map something to "+y (cut buffer) and "*y (selection buffer) while in
+" visual mode.
+"vmap <++> "+y " The yank to the cut buffer (clipboard)
+"vmap <++> "*y " The yank to the selection buffer
+
+
+" Buffers
+" ----------------------------------------------------------------------
+set hidden
+map <S-F7> :bNext<LF>
+map <S-F8> :bnext<LF>
+
+
+" Printing
+" ----------------------------------------------------------------------
+set printoptions=paper:A4,duplex:long
+" set printoptions+=number:y
+" TODO: Figure out how to print multibyte encodings. Enabling this settings
+" produces errors.
+set encoding=utf-8
+set fileencoding=utf-8
+" set printmbcharset=JIS_X_1990 " This allows Japanese characters to be printed
+" set printmbfont=r:Noto-Sans-CJK-JP
+
+
+" Functions
+" ----------------------------------------------------------------------
+" TODO: maybe replace with $runtimepath
+source $VIMFILES/fun.vim
+
+
+" Views and Sessions (Window layout and Line folding)
+" ----------------------------------------------------------------------
+" It is possible to create folds automatically but idk how to do it.
+" :mkview so save them :loadview to load them (zo open one, zc close one,
+" zR to open all, zM to close all, zx to restore))
+
+" Views saves folds. Sessions saves all windows configuration and layout
+" Load Sessions with $ vim -S Session.vim
+
+" To automatically save and restore views for *.c *.cpp files:
+au BufWinLeave *.c mkview
+au BufWinEnter *.c silent loadview
+au BufWinLeave *.cpp mkview
+au BufWinEnter *.cpp silent loadview
+
+
+" Snippets
+" ----------------------------------------------------------------------
+" I deleted the file accidently
+"nnoremap ,ch :-1r $VIMFILES/snippets/cheader.c<CR>
+
+
+" File Browsing
+" ----------------------------------------------------------------------
+" Use netrw out of the box file browser plugin.
+" :e . open file browser on current directory
+" V or t open file on vsplit or new tab.
+" :bd or :Rex to return
+" More mappings on |netrw-browse-maps|
+"let g:netrw_banner=0 " disable banner
+"let g:netrw_browse_split=4 " open in prior window
+let g:netrw_altv=1 " open splits to the right
+"let g:netrw_list_hide=netrw_gitignore#Hide()
+"let g:netrw_list_hide.=',\(^\|\s\s\)\zs\.\S\+' " wtf? (?)
+" Learned from Max Cantor talk https://youtu.be/XA2WjJbmmoM
+
+
+" Additions
+" ----------------------------------------------------------------------
+" Replaces previous WORD arithmetic expression with result (from Vim
+" fandom-wiki)
+inoremap <C-A> <Esc>diWi<C-R>=<C-R>"<CR>
+
+
+" Plugins
+" ----------------------------------------------------------------------
+" I disabled it bc I think it interferes with formatoptions
+"" Automatic vim-plug install
+"if empty(glob('~/.vim/autoload/plug.vim'))
+" silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
+" \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
+" autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
+"endif
+"
+"call plug#begin()
+"Plug 'ARM9/arm-syntax-vim'
+"autocmd BufNewFile,BufRead *.s,*.S set filetype=arm " arm = armv6/7
+"
+"call plug#end()
+
+" Other plugins
+" I used to use IndexedSearch plugin. Functionality was incorporated into Vim
+" since Vim 8.1.1270.
+set shortmess-=S
+
+
+" Colors
+" ----------------------------------------------------------------------
+" I like desert, murphy, pablo, industry
+" (default is OK for most cases but when using vimdiff, highlighted numbers are
+" unreadable)
+:colorscheme industry
+
+
+" Ducktape (place this in ~/.vim/after (after directory))
+" ----------------------------------------------------------------------
+" Not even the ducktape worked for this one on C files TODO
+set formatoptions-=o " Automatically insert the current comment leader
+" TODO: fix this shit getting reset in a markdown text
+set formatoptions+=r " auto insert comment leader after <Enter>
diff --git a/config/vim/vimrc_windows b/config/vim/vimrc_windows
new file mode 100644
index 0000000..8ce69cd
--- /dev/null
+++ b/config/vim/vimrc_windows
@@ -0,0 +1,10 @@
+" Git for Windows Vim user initialization file
+" GFW uses ~/.vimrc and ~/.vim/vimrc instead of ~/_vimrc and ~/vimfiles/vimrc
+" See https://github.com/git-for-windows/git/issues/658#issuecomment-184269470
+" This file configures GFW Vim to behave like Windows Vim
+" From: https://kevinlocke.name/bits/2020/07/30/sharing-vimrc-in-git-for-windows/
+let &runtimepath = '~/vimfiles,'
+\ . join(filter(split(&runtimepath, ','), 'v:val !~? "/\\.vim"'), ',')
+\ . ',~/vimfiles/after'
+let &packpath = &runtimepath
+source ~/vimfiles/vimrc
diff --git a/config/vscode/Readme.adoc b/config/vscode/Readme.adoc
new file mode 100644
index 0000000..d14dc6f
--- /dev/null
+++ b/config/vscode/Readme.adoc
@@ -0,0 +1,7 @@
+Preferably use "Code - OSS" instead of VSCode.
+
+Changes:
+
+* Light solarized color scheme
+* "Old" Activity Bar and Status Bar colors
+* Rulers
diff --git a/config/vscode/keybindings.json b/config/vscode/keybindings.json
new file mode 100644
index 0000000..7c5b25b
--- /dev/null
+++ b/config/vscode/keybindings.json
@@ -0,0 +1,58 @@
+// Place your key bindings in this file to override the defaultsauto[]
+[
+ {
+ "key": "f8",
+ "command": "-editor.action.marker.nextInFiles",
+ "when": "editorFocus"
+ },
+ {
+ "key": "f8",
+ "command": "workbench.action.debug.stepOver",
+ "when": "debugState == 'stopped'"
+ },
+ {
+ "key": "f10",
+ "command": "-workbench.action.debug.stepOver",
+ "when": "debugState == 'stopped'"
+ },
+ {
+ "key": "f7",
+ "command": "-editor.action.diffReview.next",
+ "when": "isInDiffEditor"
+ },
+ {
+ "key": "f7",
+ "command": "-editor.action.wordHighlight.next",
+ "when": "editorTextFocus && hasWordHighlights"
+ },
+ {
+ "key": "f7",
+ "command": "workbench.action.debug.stepInto",
+ "when": "debugState != 'inactive'"
+ },
+ {
+ "key": "f11",
+ "command": "-workbench.action.debug.stepInto",
+ "when": "debugState != 'inactive'"
+ },
+ {
+ "key": "shift+f7",
+ "command": "-editor.action.diffReview.prev",
+ "when": "isInDiffEditor"
+ },
+ {
+ "key": "shift+f7",
+ "command": "-editor.action.wordHighlight.prev",
+ "when": "editorTextFocus && hasWordHighlights"
+ },
+ {
+ "key": "shift+f7",
+ "command": "workbench.action.debug.stepOut",
+ "when": "debugState == 'stopped'"
+ },
+ {
+ "key": "shift+f11",
+ "command": "-workbench.action.debug.stepOut",
+ "when": "debugState == 'stopped'"
+ }
+] \ No newline at end of file
diff --git a/config/vscode/settings.json b/config/vscode/settings.json
new file mode 100644
index 0000000..1c0204d
--- /dev/null
+++ b/config/vscode/settings.json
@@ -0,0 +1,14 @@
+{
+ "editor.minimap.enabled": false,
+ "editor.rulers": [80, 120],
+ "editor.wordWrap": "on",
+ "editor.lineNumbers": "off",
+
+ "jupyter.askForKernelRestart": false,
+ "[python]": {
+ "editor.formatOnType": true
+ },
+ "terminal.integrated.enableMultiLinePasteWarning": false,
+ "gitlens.hovers.currentLine.over": "line",
+ "autoDocstring.docstringFormat": "sphinx-notypes",
+}
diff --git a/config/xorg/xbindkeysrc b/config/xorg/xbindkeysrc
new file mode 100644
index 0000000..9437ef0
--- /dev/null
+++ b/config/xorg/xbindkeysrc
@@ -0,0 +1,177 @@
+# For the benefit of emacs users: -*- shell-script -*-
+###########################
+# xbindkeys configuration #
+###########################
+#
+# Version: 1.8.7
+#
+# If you edit this file, do not forget to uncomment any lines
+# that you change.
+# The pound(#) symbol may be used anywhere for comments.
+#
+# To specify a key, you can use 'xbindkeys --key' or
+# 'xbindkeys --multikey' and put one of the two lines in this file.
+#
+# The format of a command line is:
+# "command to start"
+# associated key
+#
+#
+# A list of keys is in /usr/include/X11/keysym.h and in
+# /usr/include/X11/keysymdef.h
+# The XK_ is not needed.
+#
+# List of modifier:
+# Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock),
+# Mod3 (CapsLock), Mod4, Mod5 (Scroll).
+#
+
+# The release modifier is not a standard X modifier, but you can
+# use it if you want to catch release events instead of press events
+
+# By defaults, xbindkeys does not pay attention with the modifiers
+# NumLock, CapsLock and ScrollLock.
+# Uncomment the lines above if you want to pay attention to them.
+
+#keystate_numlock = enable
+#keystate_capslock = enable
+#keystate_scrolllock= enable
+
+# Examples of commands:
+
+#"xbindkeys_show"
+# control+shift + q
+
+## set directly keycode (here control + f with my keyboard)
+#"xterm"
+# c:41 + m:0x4
+
+## specify a mouse button
+#"xterm"
+# control + b:2
+
+#"xterm -geom 50x20+20+20"
+# Shift+Mod2+alt + s
+#
+## set directly keycode (here control+alt+mod2 + f with my keyboard)
+#"xterm"
+# alt + c:0x29 + m:4 + mod2
+#
+## Control+Shift+a release event starts rxvt
+#"rxvt"
+# release+control+shift + a
+#
+## Control + mouse button 2 release event starts rxvt
+#"rxvt"
+# Control + b:2 + Release
+
+
+# My shortcuts
+# ============
+
+# Modifier scheme (order: Control,Shift,Alt(Mod1),Super(Mod4)):
+# * app-specific:
+# * Control, Control+Shift
+# * Linux & WM (dwm):
+# * Alt, Control+Alt, Shift+Alt
+# * user-defined:
+# * Mod4 (application launch & audio control)
+# * Shift+Mod4 (brightness control & audio control)
+# * Control+Mod4 (unused)
+# * Alt+Mod4 (unused)
+# * unused (4 finger shortcuts):
+# * Control+Shift+Alt, Control+Shift+Mod4, Control+Alt+Mod4, Shift+Alt+Mod4
+# * unused (5 finger shortcut):
+# * Control+Shift+Alt+Mod4
+
+# System
+# ------
+
+"sudo shutdown 0"
+ Control+Shift+Alt+Mod4 + s
+"sudo reboot"
+ Control+Shift+Alt+Mod4 + r
+
+"slock"
+ Control+Alt + l
+
+# Audio & brightness control
+# Ref.:
+# https://wiki.archlinux.org/title/Backlight
+
+"pactl set-sink-volume '@DEFAULT_SINK@' '+10%'"
+ Mod4 + k
+# XF86AudioRaiseVolume
+
+"pactl set-sink-volume '@DEFAULT_SINK@' '-10%'"
+ Mod4 + j
+# XF86AudioLowerVolume
+
+"pactl set-sink-mute '@DEFAULT_SINK@' 'toggle'"
+ Shift+Mod4 + m
+# XF86AudioMute
+
+"pactl set-source-mute @DEFAULT_SOURCE@ toggle"
+ Mod4 + m
+
+# Maybe it'd be a good idea to remove the sudo from here, idk
+"sudo xbacklight -inc 10"
+ Shift+Mod4 + k
+# XF86MonBrightnessUp
+
+"sudo xbacklight -dec 10"
+ Shift+Mod4 + j
+# XF86MonBrightnessDown
+
+# dwm
+# --------------------
+
+"dmenu-webshortcuts.sh"
+ Alt + w
+
+"dmenu-emojicopy.sh"
+ Alt + e
+
+# Launch applications (super + key)
+# ---------------------------------
+
+"st -e tmux"
+ Mod4 + Return
+
+"st"
+ Shift+Mod4 + Return
+
+"pcmanfm"
+ Mod4 + e
+
+"firefox"
+ Mod4 + w
+
+"thunderbird"
+ Mod4 + t
+
+"goldendict"
+ Mod4 + g
+
+"zeal"
+ Mod4 + h
+
+# Media control
+# -------------
+
+"playerctl play-pause"
+ Mod4 + Down
+# XF86AudioPlay
+"playerctl stop"
+ Mod4 + Up
+# XF86AudioStop
+"playerctl next"
+ Mod4 + Right
+# XF86AudioPrev
+"playerctl previous"
+ Mod4 + Left
+# XF86AudioNext
+
+##################################
+# End of xbindkeys configuration #
+##################################
diff --git a/config/xorg/xinitrc b/config/xorg/xinitrc
new file mode 100644
index 0000000..6268abc
--- /dev/null
+++ b/config/xorg/xinitrc
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+# This first part is copied from /etc/X11/xinit/xinitrc
+#
+# Start X with `$ xstart`
+# See startx(1) and xinit(1)
+
+
+userresources=$HOME/.Xresources
+usermodmap=$HOME/.Xmodmap
+sysresources=/etc/X11/xinit/.Xresources
+sysmodmap=/etc/X11/xinit/.Xmodmap
+
+# merge in defaults and keymaps
+
+if [ -f $sysresources ]; then
+ xrdb -merge $sysresources
+fi
+
+if [ -f $sysmodmap ]; then
+ xmodmap $sysmodmap
+fi
+
+if [ -f "$userresources" ]; then
+ xrdb -merge "$userresources"
+fi
+
+if [ -f "$usermodmap" ]; then
+ xmodmap "$usermodmap"
+fi
+
+# Load necessary X11 configuration
+
+if [ -d /etc/X11/xinit/xinitrc.d ] ; then
+ for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
+ [ -x "$f" ] && . "$f"
+ done
+ unset f
+fi
+
+# Setup and start Desktop Environment
+# ======================================================================
+
+# fcitx (CJK and emoji input method)
+export GTK_IM_MODULE=fcitx
+export QT_IM_MODULE=fcitx
+export XMODIFIERS=@im=fcitx
+
+xrandr --dpi 144 # Original mac: 72, stupid windows: 96 pulse15: 188
+laptop-xinput_setup.sh
+xbindkeys # keyboard shortcuts
+setxkbmap -option caps:escape # map CAPSLOCK to ESC
+
+# Start twm
+#twm &
+#xclock -geometry 50x50-1+1 &
+#xterm -geometry 80x50+494+51 &
+#xterm -geometry 80x20+494-0 &
+#exec xterm -geometry 80x66+0+0 -name login
+
+# Start Plasma
+# Start KDE Plasma (DE)
+#export DESKTOP_SESSION=plasma
+#exec startplasma-x11
+
+# Start xfce4
+#startxfce4
+
+# Start dwm
+xautolock -time 10 -locker slock &
+exec dwm
diff --git a/config/zathura/zathurarc b/config/zathura/zathurarc
new file mode 100644
index 0000000..4d38c70
--- /dev/null
+++ b/config/zathura/zathurarc
@@ -0,0 +1,59 @@
+#########################
+# Configuracion Zathura #
+#########################
+#
+# para para saber que hace cada huevada
+# ver manpage zathurarc(5)
+#
+
+# Default commented shit
+# ======================
+
+# zoom and scroll step size
+# set zoom-setp 20
+# set scroll-setp 80
+
+# copy selection to system clipboard
+# set selection-clipboard clipboard
+
+# enable incremental search
+# set incremental-search true
+
+# mapings
+# =======
+
+# TODO Button 3 is left mouse button, I want to map it to 'hold to pan document'
+# which is mapped to mouse 2 (middle button)
+#map Button3
+
+unmap [normal] <C-n>
+map [normal] <C-g> toggle_statusbar
+unmap [fullscreen] <C-n>
+map [fullscreen] <C-g> toggle_statusbar
+
+unmap [normal] D
+map [normal] D toggle_page_mode
+unmap [fullscreen] D
+map [fullscreen] D toggle_page_mode
+
+map [normal] u scroll half-up
+map [normal] d scroll half-down
+map [fullscreen] u scroll half-up
+map [fullscreen] d scroll half-down
+
+# settings
+# ========
+
+#set window-width 768
+set window-width 1025
+set window-height 740
+set adjust-open width
+
+#set smooth-scroll true
+
+#set first-page-column 2
+
+set statusbar-home-tilde true
+#set window-title-home-tilde true
+set window-title-basename true
+set selection-clipboard clipboard