Initial Commit

This commit is contained in:
Thomas Dehaeze 2019-01-31 09:41:03 +01:00
commit 80113fd633
25 changed files with 18206 additions and 0 deletions

25
Makefile Normal file
View File

@ -0,0 +1,25 @@
cache_dir := .cache
orgs := $(wildcard dotfiles/*.org)
tangle_el := elisp/tangle.el
^el = $(filter %.el,$^)
EMACS.funcall = emacs --batch --no-init-file $(addprefix --load ,$(^el)) --funcall
all: tangle
clean:
rm -rf $(cache_dir)
tangle: $(basename $(orgs))
$(cache_dir)/%.out: %.org $(tangle_el) $(cache_dir)/
$(EMACS.funcall) literate-dotfiles-tangle $< > $@
%/:
mkdir -p $@
%: %.org $(cache_dir)/%.out
@$(NOOP)
.PHONY: all clean test
.PRECIOUS: $(cache_dir)/ $(cache_dir)/%.out

65
awesome/emacs.org Normal file
View File

@ -0,0 +1,65 @@
#+TITLE: Awesome Emacs
* Other Awesome Emacs
https://github.com/emacs-tw/awesome-emacs
https://github.com/dakrone/eos
* Distributions
https://github.com/hlissner/doom-emacs
https://github.com/ralesi/spacemacs.org
* General
https://github.com/chrisdone/elisp-guide
https://github.com/melpa/melpa
https://github.com/jwiegley/use-package
* Packages
https://github.com/company-mode/company-mode
https://github.com/emacs-evil/evil
https://github.com/syl20bnr/spacemacs
https://github.com/magit/magit
https://github.com/jaypei/emacs-neotree
https://github.com/abo-abo/swiper
https://github.com/joaotavora/yasnippet
https://github.com/politza/pdf-tools
https://github.com/jkitchin/scimax
https://github.com/jkitchin/org-ref
https://github.com/weirdNox/org-noter
https://github.com/abo-abo/avy
https://github.com/bbatsov/projectile
https://github.com/emacs-helm/helm
https://github.com/redguardtoo/evil-matchit
https://github.com/kiwanami/emacs-calfw
https://github.com/ch11ng/exwm
https://github.com/yuya373/emacs-slack
https://github.com/rudolfochrist/interleave
https://github.com/jwiegley/alert
https://github.com/nashamri/academic-phrases
https://github.com/vermiculus/magithub
https://github.com/auto-complete/auto-complete
https://github.com/Fuco1/smartparens
https://github.com/Alexander-Miller/treemacs
https://github.com/rexim/org-cliplink
https://github.com/abo-abo/org-download
https://github.com/jsinglet/latex-preview-pane
https://github.com/noctuid/evil-guide
https://github.com/linktohack/ox-latex-subfigure
https://github.com/Wilfred/ag.el
https://github.com/dengste/org-caldav
https://github.com/tmalsburg/helm-bibtex
https://github.com/pronobis/matlab-mode
https://github.com/yuhonglin/matlab-mode
https://github.com/Chobbes/org-chef
https://github.com/fuxialexander/emacs-webkit-katex-render
https://github.com/myuhe/org-gcal.el
https://github.com/emacs-evil/evil-collection
* Theme
https://github.com/greduan/emacs-theme-gruvbox
* Org Mode
https://github.com/fniessen/org-html-themes
https://github.com/astahlman/ob-async
https://github.com/bastibe/org-journal
https://github.com/alphapapa/org-super-agenda
https://github.com/hagmonk/org-kanban

54
awesome/latex.org Normal file
View File

@ -0,0 +1,54 @@
#+TITLE: Awesome LaTeX
* Other Awezome LaTeX
https://github.com/cmichi/latex-template-collection
https://github.com/latex3/latex3
https://github.com/egeerardyn/awesome-LaTeX
https://github.com/simonharrer/latex-best-practices
https://github.com/dspinellis/latex-advice
* Learn LaTeX
https://www.youtube.com/user/AlainOlivetti/playlists
* Tools
https://tectonic-typesetting.github.io/en-US/
https://github.com/gpoore/minted
* Theme/class
https://github.com/derric/cleanthesis
https://github.com/tdehaeze/clean-latex-template
https://github.com/deedy/Deedy-Resume
https://github.com/deselaers/latex-beamerposter
* Beamer
https://github.com/josephwright/beamer
** Theme
https://github.com/matze/mtheme
https://github.com/martinbjeldbak/ultimate-beamer-theme-list
* Tikz
https://github.com/walmes/Tikz
https://github.com/xiaohanyu/awesome-tikz
https://github.com/circuitikz/circuitikz
https://github.com/cbersch/pst-optexp
https://github.com/hackl/TikZ-StructuralAnalysis
https://github.com/fhackenberger/ktikz
* Packages
https://github.com/T-F-S/tcolorbox
* Math
** Make arrows with text above and bellow
https://tex.stackexchange.com/questions/103988/rightarrow-with-text-above-it
#+BEGIN_SRC latex
\documentclass{article}
\usepackage{mathtools}
\begin{document}
$\xrightarrow[\text{world}]{\text{hello}}$
$\xRightarrow[\text{world}]{\text{hello}}$
$\xrightarrow[g(x)]{f(x)}$
$\xRightarrow[g(x)]{f(x)}$
\end{document}
#+END_SRC

73
awesome/vim.org Normal file
View File

@ -0,0 +1,73 @@
#+TITLE: Awesome Vim
* Other Awesome Vim
https://github.com/akrawchyk/awesome-vim
* Distribution
https://github.com/SpaceVim/SpaceVim
* Packages
https://github.com/metakirby5/codi.vim
https://github.com/SirVer/ultisnips
https://github.com/fatih/vim-go
https://github.com/junegunn/fzf.vim
https://github.com/junegunn/goyo.vim
https://github.com/junegunn/vim-easy-align
https://github.com/tpope/vim-obsession
https://github.com/itchyny/lightline.vim
https://github.com/christoomey/vim-tmux-navigator
https://github.com/Valloric/YouCompleteMe
https://github.com/tpope/vim-dispatch
https://github.com/jpalardy/vim-slime
https://github.com/Shougo/deoplete.nvim
https://github.com/justinmk/vim-sneak
https://github.com/sheerun/vim-polyglot
https://github.com/tommcdo/vim-exchange
https://github.com/tpope/vim-commentary
https://github.com/neomake/neomake
https://github.com/honza/vim-snippets
https://github.com/kassio/neoterm
https://github.com/Shougo/vimfiler.vim
https://github.com/tpope/vim-abolish
https://github.com/zchee/deoplete-jedi
https://github.com/Rip-Rip/clang_complete
https://github.com/jiangmiao/auto-pairs
https://github.com/majutsushi/tagbar
https://github.com/vim-scripts/a.vim
https://github.com/mhinz/vim-startify
https://github.com/dkprice/vim-easygrep
https://github.com/tpope/vim-vinegar
https://github.com/jceb/vim-orgmode
https://github.com/plasticboy/vim-markdown
https://github.com/AndrewRadev/splitjoin.vim
https://github.com/tpope/vim-surround
https://github.com/mhinz/vim-signify
https://github.com/mhinz/vim-grepper
https://github.com/itchyny/calendar.vim
https://github.com/maxbrunsfeld/vim-yankstack
https://github.com/brooth/far.vim
https://github.com/JamshedVesuna/vim-markdown-preview
https://github.com/sjl/gundo.vim
https://github.com/wincent/terminus
https://github.com/sbdchd/neoformat
https://github.com/ntpeters/vim-better-whitespace
https://github.com/tpope/vim-eunuch
https://github.com/w0rp/ale
https://github.com/Shougo/denite.nvim
https://github.com/haya14busa/is.vim
https://github.com/Olical/vim-enmasse
https://github.com/wincent/loupe
https://github.com/daeyun/vim-matlab
https://github.com/cknadler/vim-anywhere
https://github.com/szymonmaszke/vimpyter
https://github.com/tpope/vim-dadbod
https://github.com/urbainvaes/vim-remembrall
https://github.com/junegunn/vim-peekaboo
https://github.com/liuchengxu/vim-which-key
https://github.com/easymotion/vim-easymotion
https://github.com/chrisbra/NrrwRgn
* Themes
https://github.com/jacoborus/tender.vim
https://github.com/mhartington/oceanic-next
https://github.com/morhetz/gruvbox

View File

@ -0,0 +1,4 @@
#+TITLE: Makefiles
- http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/
- https://swcarpentry.github.io/make-novice/02-makefiles/

View File

@ -0,0 +1,42 @@
#+TITLE: Unix Commands
* Navigation
- =pwd= Print Working Directory
- =ls= List Segments: list files
- =-a= All - show hidden files
- =-l= Long
- =-t= Time - in order of modification time
- =cd= Change Directory
- =mkdir= Make Directory
* Manipulation
- =cp= : copies files
- =mv= : moves and rename files
- =rm= : remove files
- =rm -r= : remove directories (-r : Recursive)
* Redirection
- =>= : redirects output of a command to a file, overwriting previous content
- =>>= : redirects output of a command to a file, appending new content to previous content
- =<= : redirects standard input to a command
- =|= : redirects standard output of a command to another command
- =sort= : sort lines of text alphabetically
- =uniq= : filters duplicate, adjacent lines of text
- =grep= : searches for a text pattern and outputs it
- =sed= : searches for a text pattern, modifies it, and outputs it
* Environnement
- =~= (alt+n) : users home directory
- =nano= : line text editor
- =\.bash_profile= : is where environment settings are stored
- ~export VARIABLE='Value'~
- =USER= : the name of the current user
- =HOME= : home directory (not to customize)
- =env= : return a list of environment variables
* Grep
=grep texte nomfichier=
- =-i= : ne pas tenir compte de la casse (majuscules / minuscules)
- =-n= : connaître les numéros des lignes
- =-v= : inverser la recherche : ignorer un mot
- =-r= : rechercher dans tous les fichiers et sous-dossiers

398
dotfiles/bash.org Normal file
View File

@ -0,0 +1,398 @@
#+TITLE: Bash Configuration
* Bashrc
:PROPERTIES:
:header-args:conf: :tangle ~/.bashrc
:header-args:conf+: :comments both :mkdirp yes
:END:
** TODO What does that do?
#+BEGIN_SRC conf
[[ $- != *i* ]] && return
#+END_SRC
** Bash Completion
#+BEGIN_SRC conf
[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion
#+END_SRC
** Change the window title of X terminals
#+BEGIN_SRC conf
case ${TERM} in
xterm*|rxvt*|Eterm*|aterm|kterm|gnome*|interix|konsole*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\007"'
;;
screen*)
PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\033\\"'
;;
esac
#+END_SRC
** Use Color
#+BEGIN_SRC conf
use_color=true
#+END_SRC
** TODO Set colorful PS1 only on colorful terminals.
dircolors --print-database uses its own built-in database instead of using /etc/DIR_COLORS. Try to use the external file first to take advantage of user additions. Use internal bash globbing instead of external grep binary.
#+BEGIN_SRC conf
safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM
match_lhs=""
[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"
[[ -z ${match_lhs} ]] \
&& type -P dircolors >/dev/null \
&& match_lhs=$(dircolors --print-database)
[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true
if ${use_color} ; then
# Enable colors for ls, etc. Prefer ~/.dir_colors #64489
if type -P dircolors >/dev/null ; then
if [[ -f ~/.dir_colors ]] ; then
eval $(dircolors -b ~/.dir_colors)
elif [[ -f /etc/DIR_COLORS ]] ; then
eval $(dircolors -b /etc/DIR_COLORS)
fi
fi
if [[ ${EUID} == 0 ]] ; then
PS1='\[\033[01;31m\][\h\[\033[01;36m\] \W\[\033[01;31m\]]\$\[\033[00m\] '
else
PS1='\[\033[01;32m\][\u@\h\[\033[01;37m\] \W\[\033[01;32m\]]\$\[\033[00m\] '
fi
alias ls='ls --color=auto'
alias grep='grep --colour=auto'
alias egrep='egrep --colour=auto'
alias fgrep='fgrep --colour=auto'
else
if [[ ${EUID} == 0 ]] ; then
# show root@ when we don't have colors
PS1='\u@\h \W \$ '
else
PS1='\u@\h \w \$ '
fi
fi
#+END_SRC
#+BEGIN_SRC conf
unset use_color safe_term match_lhs sh
#+END_SRC
#+BEGIN_SRC conf
xhost +local:root > /dev/null 2>&1
complete -cf sudo
# Line wrap on window resize
shopt -s checkwinsize
shopt -s expand_aliases
# Auto "cd" when entering just a path
shopt -s autocd
# Enable history appending instead of overwriting
shopt -s histappend
#+END_SRC
** Rebind up and down arrow keys to search through bash history
#+BEGIN_SRC conf
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
#+END_SRC
** Aliases
*** Better defaults for some commands
#+BEGIN_SRC conf
alias cp="cp -i" # confirm before overwriting something
alias df='df -h' # human-readable sizes
alias free='free -m' # show sizes in MB
alias mutt="neomutt"
#+END_SRC
*** One letter aliases
#+BEGIN_SRC conf
alias r="ranger"
alias t="tmux"
alias v="nvim"
alias sv='sudo -E nvim'
alias g="git"
alias m="neomutt"
alias y="yadm"
alias o="xdg-open"
#+END_SRC
*** Magit
#+BEGIN_SRC conf
alias magit="emacsclient -create-frame --alternate-editor=\"\" --eval '(magit-status)' ."
#+END_SRC
*** Vim-like
#+BEGIN_SRC conf
alias :q=exit
alias :e=nvim
#+END_SRC
*** Youtube
#+BEGIN_SRC conf
alias yt="youtube-dl --add-metadata -ic" # Download video link
alias yta="yt -x -f bestaudio/best" # Download only audio
#+END_SRC
*** Print each PATH entry on a separate line
#+BEGIN_SRC conf
alias path='echo -e ${PATH//:/\\n}'
#+END_SRC
*** TODO IP addresses - Remove the use of =dig= and =ifconfig=
#+BEGIN_SRC conf
# alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
# alias localip="ip route get 8.8.4.4 | head -1 | awk '{print $7}'"
# alias ips="ifconfig -a | grep -o 'inet6\? \(addr:\)\?\s\?\(\(\([0-9]\+\.\)\{3\}[0-9]\+\)\|[a-fA-F0-9:]\+\)' | awk '{ sub(/inet6? (addr:)? ?/, \"\"); print }'"
#+END_SRC
** Functions
*** Display colors
#+BEGIN_SRC conf
colors() {
local fgc bgc vals seq0
printf "Color escapes are %s\n" '\e[${value};...;${value}m'
printf "Values 30..37 are \e[33mforeground colors\e[m\n"
printf "Values 40..47 are \e[43mbackground colors\e[m\n"
printf "Value 1 gives a \e[1mbold-faced look\e[m\n\n"
# foreground colors
for fgc in {30..37}; do
# background colors
for bgc in {40..47}; do
fgc=${fgc#37} # white
bgc=${bgc#40} # black
vals="${fgc:+$fgc;}${bgc}"
vals=${vals%%;}
seq0="${vals:+\e[${vals}m}"
printf " %-9s" "${seq0:-(default)}"
printf " ${seq0}TEXT\e[m"
printf " \e[${vals:+${vals+$vals;}}1mBOLD\e[m"
done
echo; echo
done
}
#+END_SRC
*** TODO Meteo - Is Dig mandatory?
To install =dig=, use =yay -S bind-tools=
#+BEGIN_SRC conf
meteo() {
if [ -n "$*" ]; then
address="wttr.in/"
address+=$*
address+="?lang=fr"
curl "$address"
else
address="wttr.in/"
address+=$(ip)
address+="?lang=fr"
curl "$address"
fi
}
alias meteo=meteo
#+END_SRC
*** TODO Upload using transfer.sh
#+BEGIN_SRC conf
upload() {
# write to output to tmpfile because of progress bar
tmpfile=$(mktemp -t transferXXX)
# basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9]/-/g')
curl --progress-bar --upload-file "$1" "https://transfer.sh/" >> $tmpfile;
cat $tmpfile | xclip;
echo "Copied:" $(cat $tmpfile);
rm -f $tmpfile;
}
alias upload=upload
#+END_SRC
*** TODO Upload alternative
#+BEGIN_SRC conf
transfer() {
curl --progress-bar --upload-file "$1" https://transfer.sh/$(basename $1) | xclip -in -selection clipboard;
}
alias transfer=transfer
#+END_SRC
*** Extract archive
usage: ex <file>
#+BEGIN_SRC conf
ex ()
{
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1;;
*.7z) 7z x $1 ;;
*) echo "'$1' cannot be extracted via ex()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
#+END_SRC
*** Tree display
=tre= is a shorthand for =tree= with hidden files and color enabled, ignoring
the =.git= directory, listing directories first. The output gets piped into
=less= with options to preserve color and line numbers, unless the output is
small enough for one screen.
#+BEGIN_SRC conf
function tre() {
tree -aC -I '.git|node_modules|bower_components' --dirsfirst "$@" | less -FRNX;
}
#+END_SRC
*** Create a new directory and enter it
#+BEGIN_SRC conf
function mkd() {
mkdir -p "$@" && cd "$_";
}
#+END_SRC
*** Filesize of directory
#+BEGIN_SRC conf
function fs() {
if du -b /dev/null > /dev/null 2>&1; then
local arg=-sbh;
else
local arg=-sh;
fi
if [[ -n "$@" ]]; then
du $arg -- "$@";
else
du $arg .[^.]* ./*;
fi;
}
#+END_SRC
*** Redirect both standard output and standard error, as well as sending to background
#+BEGIN_SRC conf
function nullify() {
"$@" >/dev/null 2>&1
}
#+END_SRC
** Prompt
#+BEGIN_SRC conf
if [ "`id -u`" -eq 0 ]; then
PS1="\[\033[m\]|\[\033[1;35m\]\t\[\033[m\]|\[\e[1;31m\]\u\[\e[1;36m\]\[\033[m\]@\[\e[1;36m\]\h\[\033[m\]:\[\e[0m\]\[\e[1;32m\][\W]> \[\e[0m\]"
else
PS1="\[\033[m\]|\[\033[1;35m\]\t\[\033[m\]|\[\e[1m\]\u\[\e[1;36m\]\[\033[m\]@\[\e[1;36m\]\h\[\033[m\]:\[\e[0m\]\[\e[1;32m\][\W]> \[\e[0m\]"
fi
#+END_SRC
** Exports
*** Better yaourt colors
#+BEGIN_SRC conf
export YAOURT_COLORS="nb=1:pkg=1:ver=1;32:lver=1;45:installed=1;42:grp=1;34:od=1;41;5:votes=1;44:dsc=0:other=1;35"
#+END_SRC
*** Use Ripgrep for FZF
#+BEGIN_SRC conf
export FZF_DEFAULT_COMMAND='rg --files --no-ignore --hidden --follow --glob "!.git/*"'
#+END_SRC
*** Goland
#+BEGIN_SRC conf
export GOPATH=$HOME/go
#+END_SRC
*** Path
#+BEGIN_SRC conf
PATH=$GOPATH:$GOPATH/bin:$PATH
PATH=$HOME/appimages:$PATH
PATH=$HOME/.gem/ruby/2.5.0/bin:$PATH
PATH=~/bin:$PATH
export PATH
#+END_SRC
** Bash History
Undocumented feature which sets the size to "unlimited". http://stackoverflow.com/questions/9457233/unlimited-bash-history
#+BEGIN_SRC conf
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
#+END_SRC
Change the file location because certain bash sessions truncate =.bash_history= file upon close. http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
#+BEGIN_SRC conf
export HISTFILE=~/.bash_eternal_history
#+END_SRC
Force prompt to write history after every command. http://superuser.com/questions/20900/bash-history-loss
#+BEGIN_SRC conf
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
#+END_SRC
** Base16 Shell
#+BEGIN_SRC conf
BASE16_SHELL="$HOME/.base16-manager/chriskempson/base16-shell/"
[ -n "$PS1" ] && \
[ -s "$BASE16_SHELL/profile_helper.sh" ] && \
eval "$("$BASE16_SHELL/profile_helper.sh")"
#+END_SRC
* Bash Profile
:PROPERTIES:
:header-args:conf: :tangle ~/.bash_profile
:header-args:conf+: :comments both :mkdirp yes
:END:
** Ignore case for autocompletion
#+BEGIN_SRC conf
bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"
#+END_SRC
** Source bashrc
#+BEGIN_SRC conf
[[ -f ~/.bashrc ]] && . ~/.bashrc
#+END_SRC
* Profile
:PROPERTIES:
:header-args:conf: :tangle ~/.profile
:header-args:conf+: :comments both :mkdirp yes
:END:
** QT And GTK Themes
#+BEGIN_SRC conf
export QT_QPA_PLATFORMTHEME="qt5ct"
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
#+END_SRC
** Gui program to ask for sudo password
#+BEGIN_SRC conf
export SUDO_ASKPASS=~/bin/askpass-rofi
#+END_SRC
** Default
#+BEGIN_SRC conf
export EDITOR=/usr/bin/nvim
export BROWSER=/usr/bin/qutebrowser
#+END_SRC

1719
dotfiles/config.org Normal file

File diff suppressed because it is too large Load Diff

209
dotfiles/git.org Normal file
View File

@ -0,0 +1,209 @@
#+TITLE: Git Configuration
* Gitconfig
:PROPERTIES:
:header-args:conf: :tangle ~/.gitconfig
:header-args:conf+: :comments both :mkdirp yes
:END:
** Aliases
#+BEGIN_SRC conf
[alias]
# View abbreviated SHA, description, and history graph of the latest 20 commits
l = log --pretty=oneline -n 20 --graph --abbrev-commit
# View the current working tree status using the short format
s = status -s
# Show the diff between the latest commit and the current state
d = !"git diff-index --quiet HEAD -- || clear; git --no-pager diff --patch-with-stat"
di = diff --cached --ignore-all-space
# Pull in remote changes for the current repository and all its submodules
p = !"git pull; git submodule foreach git pull origin master"
# Clone a repository including all submodules
c = clone --recursive
# Commit all changes
ca = !git add -A && git commit -av
# Switch to a branch, creating it if necessary
go = "!f() { git checkout -b \"$1\" 2> /dev/null || git checkout \"$1\"; }; f"
# Show verbose output about tags, branches or remotes
tags = tag -l
branches = branch -a
remotes = remote -v
# Amend the currently staged files to the latest commit
amend = commit --amend --reuse-message=HEAD
# Credit an author on the latest commit
credit = "!f() { git commit --amend --author \"$1 <$2>\" -C HEAD; }; f"
# Interactive rebase with the given number of latest commits
reb = "!r() { git rebase -i HEAD~$1; }; r"
# Remove the old tag with this name and tag the latest commit with it.
retag = "!r() { git tag -d $1 && git push origin :refs/tags/$1 && git tag $1; }; r"
# Find branches containing commit
fb = "!f() { git branch -a --contains $1; }; f"
# Find tags containing commit
ft = "!f() { git describe --always --contains $1; }; f"
# Find commits by source code
fc = "!f() { git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%cn] %Cred%d' --decorate --date=short -S$1; }; f"
# Find commits by commit message
fm = "!f() { git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%cn] %Cred%d' --decorate --date=short --grep=$1; }; f"
# Remove branches that have already been merged with master
dm = "!git branch --merged | grep -v '\\*' | xargs -n 1 git branch -d"
# List contributors with number of commits
contributors = shortlog --summary --numbered
ec = config --global -e
# Pretty log output
hist = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all
pp = pull origin $(git_current_branch)
gg = push origin $(git_current_branch)
rhh = reset HEAD --hard
unstage = reset HEAD --
last = log -1 HEAD
#+END_SRC
** Apply
#+BEGIN_SRC conf
[apply]
# Detect whitespace errors when applying a patch
whitespace = fix
#+END_SRC
** Colors
#+BEGIN_SRC conf
[color]
# Use colors in Git commands that are capable of colored output when outputting to the terminal
ui = true
[color "branch"]
current = yellow reverse
local = yellow
remote = green
HEAD = red bold
[color "diff"]
meta = yellow bold
frag = magenta bold # line info
old = red # deletions
new = green # additions
[color "status"]
added = green
changed = yellow
untracked = cyan
[color "decorate"]
HEAD = red bold
branch = green
remoteBranch = cyan
tag = yellow
stash = bold yellow
#+END_SRC
** Default Remote
#+BEGIN_SRC conf
# Use `origin` as the default remote on the `master` branch in all cases
[branch "master"]
remote = origin
merge = refs/heads/master
#+END_SRC
** Push Configuration
#+BEGIN_SRC conf
[push]
default = matching
# Make `git push` push relevant annotated tags when pushing branches out.
followTags = true
#+END_SRC
** User
#+BEGIN_SRC conf
[user]
name = Thomas Dehaeze
email = dehaeze.thomas@gmail.com
#+END_SRC
** Core configuration
#+BEGIN_SRC conf
[core]
# Use custom `.gitignore` and `.gitattributes`
excludesfile = ~/.gitignore_global
# Treat spaces before tabs and all kinds of trailing whitespace as an error
# [default] trailing-space: looks for spaces at the end of a line
# [default] space-before-tab: looks for spaces before tabs at the beginning of a line
whitespace = space-before-tab,-indent-with-non-tab,trailing-space
# Prevent showing files whose names contain non-ASCII symbols as unversioned.
# http://michael-kuehnel.de/git/2014/11/21/git-mac-osx-and-german-umlaute.html
precomposeunicode = false
pager = diff-so-fancy | less --tabs=4 -RFX
autocrlf = input
# Open vim, start Goyo and enter insert mode on the first line
editor = "nvim -u ~/.vim/vimrc.git -c ':Goyo' -c 'goto 1' -c 'startinsert'"
#+END_SRC
** Credentials using pass
#+BEGIN_SRC conf
[credential]
helper = !pass-git-helper $@
[credential "https://github.com"]
username = tdehaeze
#+END_SRC
** Magithub
#+BEGIN_SRC conf
[magithub]
online = false
[magithub "status"]
includeStatusHeader = false
includePullRequestsSection = false
includeIssuesSection = false
#+END_SRC
** Diff-so-fancy
#+begin_src conf
[diff-so-fancy]
markEmptyLines = false
#+end_src
** Github
#+BEGIN_SRC conf
[github]
user = tdehaeze
#+END_SRC
* Global Git Ignore
:PROPERTIES:
:header-args:conf: :tangle ~/.gitignore_global
:header-args:conf+: :comments both :mkdirp yes
:END:
#+BEGIN_SRC conf
*~
.DS_Store
Session.vim
#+END_SRC

661
dotfiles/i3.org Normal file
View File

@ -0,0 +1,661 @@
#+TITLE: I3 Configuration
#+PROPERTY: header-args:conf+ :comments both
#+PROPERTY: header-args:conf+ :mkdirp yes
#+PROPERTY: header-args:conf+ :tangle ~/.i3/config
* Mod Key
#+BEGIN_SRC conf
# Set mod key (Mod1=<Alt>, Mod4=<Super>)
set $mod Mod4
#+end_src
* Border Style
#+begin_src conf
# Configure border style <normal|1pixel|pixel xx|none|pixel>
new_window pixel 2
new_float normal
# Hide borders
hide_edge_borders none
#+end_src
* Font for window titles
#+begin_src conf
font SauceCodePro Nerd Font 11
#+end_src
* Multimedia keys
#+begin_src conf
# Sound
bindsym XF86AudioMute exec --no-startup-id amixer -D pulse sset Master toggle
bindsym XF86AudioRaiseVolume exec --no-startup-id amixer -D pulse sset Master 5%+
bindsym XF86AudioLowerVolume exec --no-startup-id amixer -D pulse sset Master 5%-
# Backlight
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 10
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 10
# Tracks
bindsym XF86AudioPlay exec --no-startup-id mpc toggle
bindsym XF86AudioNext exec --no-startup-id mpc next
bindsym XF86AudioPrev exec --no-startup-id mpc prev
# Screenshots
bindsym $mod+XF86LaunchA --release exec --no-startup-id i3-scrot -w
bindsym $mod+Shift+XF86LaunchA --release exec --no-startup-id i3-scrot -s
# Other
bindsym XF86LaunchB fullscreen toggle
#+end_src
* Start Applications
#+begin_src conf
# TODO
# Start program launcher
bindsym $mod+d exec --no-startup-id rofi -show run
# Windows Switch
bindsym $mod+w exec --no-startup-id rofi -show window
# CheatSheets
bindsym $mod+Shift+c exec --no-startup-id rofi -show CheatSheets -modi CheatSheets:~/scripts/rofi_cheatsheets.sh
# Program Launcher with Icons
# bindsym $mod+Shift+d exec --no-startup-id rofi -show drun -show-icons
# Launch categorized menu
bindsym $mod+z exec --no-startup-id rofimenu
# Bookmarks
bindsym $mod+Shift+f exec --no-startup-id buku_run
# Passwords
bindsym $mod+Shift+p exec --no-startup-id rofi-pass
# Start Terminal
bindsym $mod+Return exec termite
# Tmux Terminal
bindsym $mod+Shift+Return exec termite -e 'tmux'
# Configuration application
bindsym $mod+Ctrl+b exec termite -e 'bmenu'
# Start Command line Calendar
bindsym $mod+c exec termite -e "khal interactive"
# Start GUI Calendar (Google calendar)
# bindsym $mod+Shift+c exec qutebrowser https://calendar.google.com/
# File Manager
bindsym $mod+o exec urxvt -e "ranger"
# GUI File Manager
# bindsym $mod+Shift+o exec pcmanfm
# Mail: Neomutt
bindsym $mod+m exec termite -e "tmuxinator start neomutt"
# Music Manager: NCMPCPP
# bindsym $mod+Shift+p exec termite -e "ncmpcpp"
# Browser
bindsym $mod+i exec qutebrowser
# Sound Manager
bindsym $mod+Ctrl+m exec pavucontrol
# Kill one application
bindsym $mod+Ctrl+x --release exec --no-startup-id xkill
# Kill and restart Notification Manager
bindsym $mod+Shift+n --release exec "killall dunst; exec notify-send 'restart dunst'"
# Keyboard Deadkey
# TODO - Better keybindings
bindsym $mod+Ctrl+d exec --no-startup-id setxkbmap -layout us -variant intl -option caps:escape
bindsym $mod+Shift+d exec --no-startup-id setxkbmap -layout us -option caps:escape
# Toggle poylbar
bindsym $mod+t exec --no-startup-id ~/.config/polybar/bin/toggle.sh bottom
bindsym $mod+Shift+t exec --no-startup-id ~/.config/polybar/bin/toggle.sh top
#+end_src
* Vim Anywhere
#+begin_src conf
# bindsym $mod+t exec vim-anywhere nvim termite
#+end_src
* TODO Screenshot - Change to simplier keys
#+begin_src conf
bindsym Print exec --no-startup-id i3-scrot
bindsym $mod+Print --release exec --no-startup-id i3-scrot -w
bindsym $mod+Shift+Print --release exec --no-startup-id i3-scrot -s
#+end_src
* change focus
#+begin_src conf
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
#+end_src
* Move focused window
#+begin_src conf
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
#+end_src
* Windows Manager
** TODO Split orientation - Use just one key bindings that alternates?
#+begin_src conf
bindsym $mod+semicolon split h
bindsym $mod+v split v
bindsym $mod+q split toggle
#+end_src
** Kill focused window
#+begin_src conf
bindsym $mod+Shift+q kill
#+end_src
** Use Mouse+$mod to drag floating windows
#+begin_src conf
floating_modifier $mod
#+end_src
** Toggle fullscreen mode for the focused container
#+begin_src conf
bindsym $mod+f fullscreen toggle
#+end_src
** TODO Change container layout (stacked, tabbed, toggle split)
#+begin_src conf
# bindsym $mod+s layout stacking
# bindsym $mod+w layout tabbed
# bindsym $mod+e layout toggle split
#+end_src
** TODO Toggle tiling / floating
#+begin_src conf
bindsym $mod+Shift+space floating toggle
#+end_src
** TODO Change focus between tiling / floating windows
#+begin_src conf
# bindsym $mod+space focus mode_toggle
#+end_src
** TODO Toggle sticky
#+begin_src conf
bindsym $mod+Shift+s sticky toggle
#+end_src
** TODO Focus the parent container
#+begin_src conf
bindsym $mod+a focus parent
#+end_src
* Scratchpad
#+begin_src conf
# move the currently focused window to the scratchpad
bindsym $mod+Shift+BackSpace move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+BackSpace scratchpad show
#+end_src
* Custom Cratchpad for Quick Access
** Music with ncmpcpp
#+begin_src conf
for_window [instance="scratch-ncmpcpp"] scratchpad show;
exec termite --name="scratch-ncmpcpp" --exec="ncmpcpp"
for_window [instance="scratch-ncmpcpp"] floating enable;
for_window [instance="scratch-ncmpcpp"] move position 440 px 225 px;
for_window [instance="scratch-ncmpcpp"] resize set 800 px 600 px;
for_window [instance="scratch-ncmpcpp"] move scratchpad;
#+end_src
** RSS Feed with NewsBoat
#+begin_src conf
for_window [instance="scratch-newsboat"] scratchpad show;
exec termite --name="scratch-newsboat" --exec="tmuxinator start newsboat"
for_window [instance="scratch-newsboat"] floating enable;
for_window [instance="scratch-newsboat"] move position 240 px 125 px;
for_window [instance="scratch-newsboat"] resize set 1200 px 800 px;
for_window [instance="scratch-newsboat"] move scratchpad;
#+end_src
** Calculator with insect
#+begin_src conf
for_window [instance="scratch-insect"] scratchpad show;
exec termite --name="scratch-insect" --exec="insect"
for_window [instance="scratch-insect"] floating enable;
for_window [instance="scratch-insect"] move position 440 px 225 px;
for_window [instance="scratch-insect"] resize set 800 px 600 px;
for_window [instance="scratch-insect"] move scratchpad;
#+end_src
** Mails with Neomutt
#+begin_src conf
for_window [instance="scratch-neomutt"] scratchpad show;
exec termite --name="scratch-neomutt" --exec="neomutt"
for_window [instance="scratch-neomutt"] floating enable;
for_window [instance="scratch-neomutt"] move position 240 px 125 px;
for_window [instance="scratch-neomutt"] resize set 1200 px 800 px;
for_window [instance="scratch-neomutt"] move scratchpad;
#+end_src
** Ranger
#+begin_src conf
for_window [instance="scratch-ranger"] scratchpad show;
exec urxvt -name scratch-ranger -e ranger
for_window [instance="scratch-ranger"] floating enable;
for_window [instance="scratch-ranger"] move position 240 px 125 px;
for_window [instance="scratch-ranger"] resize set 1200 px 800 px;
for_window [instance="scratch-ranger"] move scratchpad;
#+end_src
** Terminal
#+begin_src conf
for_window [instance="scratch-termite"] scratchpad show;
exec termite --name="scratch-termite"
for_window [instance="scratch-termite"] floating enable;
for_window [instance="scratch-termite"] move position 440 px 225 px;
for_window [instance="scratch-termite"] resize set 800 px 600 px;
for_window [instance="scratch-termite"] move scratchpad;
#+end_src
** TODO Stratchpad Mode - Add scripts that is there is no windows with that name runs the windows and then displays it
#+begin_src conf
bindsym $mod+s mode "$mode_stratchpad"
set $mode_stratchpad (m)ails (p)layer (c)alc (s)hell (n)ews (r)anger
mode "$mode_stratchpad" {
bindsym p [instance="scratch-ncmpcpp"] scratchpad show; mode "default"
bindsym n [instance="scratch-newsboat"] scratchpad show; mode "default"
bindsym s [instance="scratch-termite"] scratchpad show; mode "default"
bindsym c [instance="scratch-insect"] scratchpad show; mode "default"
bindsym m [instance="scratch-neomutt"] scratchpad show; mode "default"
bindsym r [instance="scratch-ranger"] scratchpad show; mode "default"
# exit system mode: "Enter" or "Escape"
bindsym Return mode "default"
bindsym Escape mode "default"
}
#+end_src
* TODO [#A] Workspace names
To display names or symbols instead of plain workspace numbers you can use something like: =set $ws1 1:mail= and =set $ws2 2:=.
#+begin_src conf
set $ws1 1:
set $ws2 2:
set $ws3 3:
set $ws4 4:
set $ws5 5:
set $ws6 6:
set $ws7 7:
set $ws8 8:
#+end_src
* Switch to workspace
#+begin_src conf
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
#+end_src
* Navigate Workspace
** Workspace back and forth (with/without active container)
#+begin_src conf
workspace_auto_back_and_forth yes
bindsym $mod+b workspace back_and_forth
bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth
#+end_src
** Move to prev/next workspace
#+begin_src conf
bindsym $mod+n workspace next
bindsym $mod+p workspace prev
#+end_src
* Move focused container to workspace
#+begin_src conf
bindsym $mod+Ctrl+1 move container to workspace $ws1
bindsym $mod+Ctrl+2 move container to workspace $ws2
bindsym $mod+Ctrl+3 move container to workspace $ws3
bindsym $mod+Ctrl+4 move container to workspace $ws4
bindsym $mod+Ctrl+5 move container to workspace $ws5
bindsym $mod+Ctrl+6 move container to workspace $ws6
bindsym $mod+Ctrl+7 move container to workspace $ws7
bindsym $mod+Ctrl+8 move container to workspace $ws8
#+end_src
* Move to workspace with focused container
#+begin_src conf
bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3
bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8
#+end_src
* Open applications on specific workspaces
#+begin_src conf
# assign [class="qutebrowser"] $ws1
# assign [class="Pcmanfm"] $ws2
# Matlab Figures
assign[title="^Fig"] $ws6
for_window [title="^Fig"] layout tabbed
assign[title="^HG_Peer"] $ws6 # Name of window when export figure with matlab
#+end_src
* Open specific applications in floating mode
#+begin_src conf
for_window [title="alsamixer"] floating enable border pixel 1
for_window [class="calamares"] floating enable border normal
for_window [class="Clipgrab"] floating enable
for_window [title="File Transfer*"] floating enable
for_window [class="Galculator"] floating enable border pixel 1
for_window [class="GParted"] floating enable border normal
for_window [title="i3_help"] floating enable sticky enable border normal
for_window [class="Lightdm-settings"] floating enable
for_window [class="Lxappearance"] floating enable sticky enable border normal
for_window [class="Manjaro Settings Manager"] floating enable border normal
for_window [title="MuseScore: Play Panel"] floating enable
for_window [class="Nitrogen"] floating enable sticky enable border normal
for_window [class="Oblogout"] fullscreen enable
for_window [class="octopi"] floating enable
for_window [class="Pamac-manager"] floating enable
for_window [class="Pavucontrol"] floating enable
for_window [class="qt5ct"] floating enable sticky enable border normal
for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal
for_window [class="Simple-scan"] floating enable border normal
for_window [class="(?i)System-config-printer.py"] floating enable border normal
for_window [class="Skype"] floating enable border normal
for_window [class="Timeset-gui"] floating enable border normal
for_window [class="(?i)virtualbox"] floating enable border normal
for_window [class="Xfburn"] floating enable
for_window [title="^Documentation -"] floating enable border normal
for_window [class="Yad"] floating enable
#+end_src
* reload the configuration file
#+begin_src conf
# bindsym $mod+Shift+c reload
#+end_src
* restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
#+begin_src conf
bindsym $mod+Shift+r restart
#+end_src
* exit i3 (logs you out of your X session)
#+begin_src conf
# bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
#+end_src
* Set shut down, restart and locking features
#+begin_src conf
bindsym $mod+0 mode "$mode_system"
# TODO - Power Key, if "ignored" in /etc/systemd/logind.conf
bindcode 124 mode "$mode_system"
set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown
mode "$mode_system" {
bindsym l exec --no-startup-id i3exit lock, mode "default"
bindsym s exec --no-startup-id i3exit suspend, mode "default"
bindsym u exec --no-startup-id i3exit switch_user, mode "default"
bindsym e exec --no-startup-id i3exit logout, mode "default"
bindsym h exec --no-startup-id i3exit hibernate, mode "default"
bindsym r exec --no-startup-id i3exit reboot, mode "default"
bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default"
# exit system mode: "Enter" or "Escape"
bindsym Return mode "default"
bindsym Escape mode "default"
}
#+end_src
* Command Mode
#+begin_src conf
bindsym $mod+space mode "command"
mode "command" {
# Command line Calendar Client (khal)
bindsym c exec termite -e "khal interactive"; mode "default"
# GUI Calendar (Google Calendar)
bindsym Shift+c exec qutebrowser https://calendar.google.com/; mode "default"
# Ranger
bindsym r exec urxvt -e "ranger"; mode "default"
# pcmanfm: GUI file manager
bindsym Shift+r exec pcmanfm; mode "default"
# Mails with neomutt
bindsym m exec termite -e "tmuxinator start neomutt"; mode "default"
# Mails with GUI
bindsym Shift+m exec qutebrowser https://mail.google.com/ https://mail.ulg.ac.be/ https://ssl.esrf.fr/+CSCO+0h75676763663A2F2F6A6A6A662E726665732E7365++/rc/?_task=mail&_mbox=INBOX; mode "default"
# Music with ncmpcpp
bindsym p exec termite --exec="ncmpcpp"; mode "default"
# Browser with qutebrowser
bindsym i exec qutebrowser; mode "default"
# Browser with firefox
bindsym Shift+i exec firefox; mode "default"
# exit resize mode: Enter or Escape
bindsym Escape mode "default"
}
#+end_src
* Emacs Mode
#+begin_src conf
bindsym $mod+e mode "emacs"
mode "emacs" {
# Emacs Client
bindsym e exec emacsclient -create-frame --alternate-editor=""; mode "default"
# Full Emacs - Usefull when installing packages
bindsym Shift+e exec emacs; mode "default"
# Bibliography Managmenet with Emacs and Helm-Bibtex
bindsym b exec emacsclient -create-frame --alternate-editor="" --eval '(helm-bibtex)'; mode "default"
# Capture
bindsym c exec emacsclient -create-frame --alternate-editor="" --eval '(org-capture)'; mode "default"
# TODO Mails with Emacs
# bindsym m exec emacsclient -create-frame --alternate-editor="" --eval '(mu4e)'; mode "default"
# exit resize mode: Enter or Escape
bindsym Escape mode "default"
}
#+end_src
* Resize
#+begin_src conf
bindsym $mod+Shift+y resize shrink width 10 px or 10 ppt
bindsym $mod+Shift+u resize grow height 10 px or 10 ppt
bindsym $mod+Shift+i resize shrink height 10 px or 10 ppt
bindsym $mod+Shift+o resize grow width 10 px or 10 ppt
#+end_src
* Autostart Background Applications
#+begin_src conf
# Authentication agent
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
# Set custom wallpaper script
exec --no-startup-id $HOME/scripts/wallpaper.sh
# Run Compton
exec --no-startup-id compton -b
# Start Network Management Framework
exec --no-startup-id nm-applet
# Start Power Manager
exec --no-startup-id xfce4-power-manager
# Bluetooth Manager
exec --no-startup-id blueman-applet
# Autolock screen after x minutes
# exec --no-startup-id xautolock -time 30 -locker blurlock
exec --no-startup-id xautolock -detectsleep -time 30 -locker blurlock -notify 60 -notifier "notify-send -u critical -t 10000 -- 'LOCKING screen in 60 seconds'"
# Autostart udiskie that is used to automount devices
exec --no-startup-id udiskie
# Screen options
exec --no-startup-id xrandr --output eDP1 --mode 1680x1050 --dpi 192
# Redshift
exec --no-startup-id redshift
# Emacs Daemon
exec --no-startup-id /usr/bin/emacs --fg-daemon
# TODO - Start polybar
exec_always --no-startup-id $HOME/.config/polybar/bin/launch.sh
# exec_always --no-startup-id $HOME/.i3/scripts/polybar_wrapper.sh launch
#+end_src
* Old autostart Applications
#+begin_src conf
# Used to display shortcuts in the background
# exec --no-startup-id start_conky_live_solarized
# Tray keyboard indicator
# exec_always --no-startup-id sbxkb
# Clipboard Manager
# exec --no-startup-id clipit
# Tray Icon with update notifications
# exec --no-startup-id pamac-tray
# Sound Icon
# exec --no-startup-id volumeicon
# Find what this does
# exec_always --no-startup-id fix_xcursor
#+end_src
* Color palette used for the terminal ( ~/.Xresources file )
Colors are gathered based on the documentation https://i3wm.org/docs/userguide.html#xresources.
#+begin_src conf
set_from_resource $darkred color1 #000000
set_from_resource $red color9 #000000
set_from_resource $darkgreen color2 #000000
set_from_resource $green color10 #000000
set_from_resource $darkyellow color3 #000000
set_from_resource $yellow color11 #000000
set_from_resource $darkblue color4 #000000
set_from_resource $blue color12 #000000
set_from_resource $darkmagenta color5 #000000
set_from_resource $magenta color13 #000000
set_from_resource $darkcyan color6 #000000
set_from_resource $cyan color14 #000000
set_from_resource $darkwhite color7 #000000
set_from_resource $white color15 #000000
# Use custom colors for black
set $black #282828
set $darkblack #1d2021
set $transparent #00000000
# set_from_resource $term_background background
# set_from_resource $term_foreground foreground
# set_from_resource $term_color0 color0
# set_from_resource $term_color1 color1
# set_from_resource $term_color2 color2
# set_from_resource $term_color3 color3
# set_from_resource $term_color4 color4
# set_from_resource $term_color5 color5
# set_from_resource $term_color6 color6
# set_from_resource $term_color7 color7
# set_from_resource $term_color8 color8
# set_from_resource $term_color9 color9
# set_from_resource $term_color10 color10
# set_from_resource $term_color11 color11
# set_from_resource $term_color12 color12
# set_from_resource $term_color13 color13
# set_from_resource $term_color14 color14
# set_from_resource $term_color15 color15
#+end_src
* TODO Theme colors
#+begin_src conf
# class border backgr. text indic. child_border
client.focused #2F3D44 #2F3D44 #1ABC9C #454948
client.focused_inactive #2F3D44 #2F3D44 #1ABC9C #454948
client.urgent #CB4B16 #FDF6E3 #1ABC9C #268BD2
client.unfocused #556064 #556064 #80FFF9 #FDF6E3
client.placeholder #000000 #0c0c0c #ffffff #000000
client.background #2B2C2B
#+end_src
* Settings for i3-gaps
#+begin_src conf
# Set inner/outer gaps
gaps inner 10
gaps outer -2
# Additionally, you can issue commands with the following syntax. This is useful to bind keys to changing the gap size.
# gaps inner|outer current|all set|plus|minus <px>
# gaps inner all set 10
# gaps outer all plus 5
# Smart gaps (gaps used if only more than one container on the workspace)
# smart_gaps on
# Smart borders (draw borders around container only if it is not the only container on this workspace)
# on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0)
smart_borders on
# Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces.
set $mode_gaps Gaps: (o) outer, (i) inner
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
bindsym $mod+Shift+g mode "$mode_gaps"
mode "$mode_gaps" {
bindsym o mode "$mode_gaps_outer"
bindsym i mode "$mode_gaps_inner"
bindsym Return mode "default"
bindsym Escape mode "default"
}
mode "$mode_gaps_inner" {
bindsym plus gaps inner current plus 5
bindsym minus gaps inner current minus 5
bindsym 0 gaps inner current set 0
bindsym Shift+plus gaps inner all plus 5
bindsym Shift+minus gaps inner all minus 5
bindsym Shift+0 gaps inner all set 0
bindsym Return mode "default"
bindsym Escape mode "default"
}
mode "$mode_gaps_outer" {
bindsym plus gaps outer current plus 5
bindsym minus gaps outer current minus 5
bindsym 0 gaps outer current set 0
bindsym Shift+plus gaps outer all plus 5
bindsym Shift+minus gaps outer all minus 5
bindsym Shift+0 gaps outer all set 0
bindsym Return mode "default"
bindsym Escape mode "default"
}
#+end_src
* Keyboard Configuration
#+begin_src conf
# Set repetition keyboard rate
exec --no-startup-id xset r rate 200 40
# Set International US keyboard layout
exec --no-startup-id setxkbmap -layout us -variant intl -option caps:escape
# Default numpad on
# exec --no-startup-id numlockx &
# =============================================================
#+END_SRC

910
dotfiles/mail.org Normal file
View File

@ -0,0 +1,910 @@
#+TITLE: Mail Configuration
* Synchronize Mailboxes - Mbsync
:PROPERTIES:
:header-args:conf: :tangle ~/.mbsyncrc
:header-args:conf+: :comments both :mkdirp yes
:END:
http://isync.sourceforge.net/
** Global Defaults
#+BEGIN_SRC conf
# Automatically create missing mailboxes, both locally and on the server
Create Both
# Save the synchronization state files in the relevant directory
SyncState *
# Permanently remove all messages [on the Master/Slave] marked for deletion.
Expunge Both
#+END_SRC
** Gmail Account
#+BEGIN_SRC conf
IMAPAccount gmail
Host imap.gmail.com
User dehaeze.thomas@gmail.com
PassCmd "pass email/dehaeze.thomas@gmail.com"
SSLType IMAPS
AuthMechs LOGIN
CertificateFile /etc/ssl/certs/ca-certificates.crt
#+END_SRC
#+BEGIN_SRC conf
IMAPStore gmail-remote
Account gmail
MaildirStore gmail-local
Path ~/.mail/gmail/
Inbox ~/.mail/gmail/Inbox
Channel gmail-Home
Master :gmail-remote:"INBOX"
Slave :gmail-local:Inbox
Channel gmail-Drafts
Master :gmail-remote:"[Gmail]/Drafts"
Slave :gmail-local:Drafts
Channel gmail-Sent
Master :gmail-remote:"[Gmail]/Sent Mail"
Slave :gmail-local:Sent
Channel gmail-Trash
Master :gmail-remote:"[Gmail]/Trash"
Slave :gmail-local:Trash
Channel gmail-All
Master :gmail-remote:"[Gmail]/All Mail"
Slave :gmail-local:Archive
#+END_SRC
#+BEGIN_SRC conf
# Catch-all for everything else: note that the `Patterns` have to exclude both
# the remote and local names for all the folders we want to exclude (except
# "INBOX", which is special-cased, it would seem).
Channel gmail
Master :gmail-remote:
Slave :gmail-local:
# Exclude everything under the internal [Gmail] folder, except the interesting folders
Patterns *
Patterns !INBOX
Patterns ![Gmail]*
Patterns !Archive
Patterns !Drafts
Patterns !Sent Mail
Patterns !Trash
Patterns !Spam
Patterns !Starred
#+END_SRC
#+BEGIN_SRC conf
# For doing a quick sync of just the INBOX with `mbsync gmail-download`.
Channel gmail-download
Master :gmail-remote:"INBOX"
Slave :gmail-local:Inbox
Create Slave
Expunge Slave
Sync Pull
#+END_SRC
** ESRF Account
#+BEGIN_SRC conf
IMAPAccount esrf
Host imaps.esrf.fr
User dehaeze
PassCmd "pass email/thomas.dehaeze@esrf.fr"
SSLType IMAPS
AuthMechs LOGIN
#+END_SRC
#+BEGIN_SRC conf
IMAPStore esrf-remote
Account esrf
MaildirStore esrf-local
Path ~/.mail/esrf/
Inbox ~/.mail/esrf/Inbox
Channel esrf-Home
Master :esrf-remote:"Inbox"
Slave :esrf-local:Inbox
Channel esrf-Drafts
Master :esrf-remote:"Drafts"
Slave :esrf-local:Drafts
Channel esrf-Archive
Master :esrf-remote:"Archive"
Slave :esrf-local:Archive
Channel esrf-Sent
Master :esrf-remote:"Sent"
Slave :esrf-local:Sent
Channel esrf-Trash
Master :esrf-remote:"Trash"
Slave :esrf-local:Trash
#+END_SRC
#+BEGIN_SRC conf
Channel esrf
Master :esrf-remote:
Slave :esrf-local:
#+END_SRC
For doing a quick sync of just the INBOX with `mbsync esrf-download`.
#+BEGIN_SRC conf
Channel esrf-download
Master :esrf-remote:"INBOX"
Slave :esrf-local:Inbox
Create Slave
Expunge Slave
Sync Pull
#+END_SRC
** ULG Account
#+BEGIN_SRC conf
IMAPAccount ulg
Host mail.ulg.ac.be
User thomas.dehaeze@doct.uliege.be
PassCmd "pass email/thomas.dehaeze@doct.uliege.be"
SSLType IMAPS
AuthMechs LOGIN
#+END_SRC
#+BEGIN_SRC conf
IMAPStore ulg-remote
Account ulg
MaildirStore ulg-local
Path ~/.mail/ulg/
Inbox ~/.mail/ulg/Inbox
Channel ulg-Home
Master :ulg-remote:"Inbox"
Slave :ulg-local:Inbox
Channel ulg-Drafts
Master :ulg-remote:"Drafts"
Slave :ulg-local:Drafts
Channel ulg-Archive
Master :ulg-remote:"Archive"
Slave :ulg-local:Archive
Channel ulg-Sent
Master :ulg-remote:"Sent"
Slave :ulg-local:Sent
Channel ulg-Trash
Master :ulg-remote:"Trash"
Slave :ulg-local:Trash
#+END_SRC
#+BEGIN_SRC conf
Channel ulg
Master :ulg-remote:
Slave :ulg-local:
#+END_SRC
For doing a quick sync of just the INBOX with `mbsync ulg-download`.
#+BEGIN_SRC conf
Channel ulg-download
Master :ulg-remote:"Inbox"
Slave :ulg-local:Inbox
Create Slave
Expunge Slave
Sync Pull
#+END_SRC
* Send Mails - Msmtp
:PROPERTIES:
:header-args:conf: :tangle ~/.msmtprc
:header-args:conf+: :comments both :mkdirp yes
:END:
https://marlam.de/msmtp/
** Defaults
#+BEGIN_SRC conf
defaults
auth on
tls on
tls_certcheck off
#+END_SRC
** Gmail Account
#+BEGIN_SRC conf
account gmail
host smtp.gmail.com
port 587
protocol smtp
from dehaeze.thomas@gmail.com
user dehaeze.thomas@gmail.com
passwordeval "pass email/dehaeze.thomas@gmail.com"
#+END_SRC
** ESRF Account
#+BEGIN_SRC conf
account esrf
host smtps.esrf.fr
port 465
protocol smtp
from thomas.dehaeze@esrf.fr
user dehaeze
tls_starttls off
passwordeval "pass email/thomas.dehaeze@esrf.fr"
#+END_SRC
** ULG Account
#+BEGIN_SRC conf
account ulg
host smtp.ulg.ac.be
port 587
protocol smtp
from thomas.dehaeze@doct.uliege.be
user s177313
tls_starttls on
passwordeval "pass email/thomas.dehaeze@doct.uliege.be"
#+END_SRC
** Default Account
#+BEGIN_SRC conf
account default : gmail
#+END_SRC
* TODO Mail Indexer - Mu
http://www.djcbsoftware.nl/code/mu/
** Cheatsheet
http://www.djcbsoftware.nl/code/mu/cheatsheet.html
* Mail Client - NeoMutt
:PROPERTIES:
:header-args:conf: :tangle ~/.mutt/muttrc
:header-args:conf+: :comments both :mkdirp yes
:END:
https://neomutt.org/
** Bindings
*** TODO Vim Bindings
Unding toutes les touches (https://github.com/iagox86/mutt/blob/master/keybindings.conf) et rebind tout pour faire un truc coherent et documenté
Rajouter les keybindings de vim https://github.com/neomutt/neomutt/issues/56#issuecomment-250780838
*** Unbind Few keys
#+BEGIN_SRC conf
bind index,pager i noop
bind index,pager g noop
bind index,pager \# noop
bind index \Cf noop
#+END_SRC
*** Index and Pager
#+BEGIN_SRC conf
bind index,pager R group-reply
bind index,pager s sync-mailbox
#+END_SRC
*** Navigation
#+BEGIN_SRC conf
bind index <space> collapse-thread
bind index k previous-entry
bind pager k previous-line
bind index j next-entry
bind pager j next-line
bind index l display-message
bind index gg first-entry
bind pager gg top
bind index G last-entry
bind pager G bottom
bind attach,index,pager \CD next-page
bind attach,index,pager \CU previous-page
bind index h noop
bind pager h exit
#+END_SRC
*** Index
#+BEGIN_SRC conf
bind index u undelete-message
bind index F search
bind index,pager P print-message
bind index,pager p recall-message
bind index,pager N search-opposite
macro index \Cr "T~U<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" "mark all messages as read"
macro index,pager \Cw "<pipe-entry> urlview<enter>" "call urlview to open links"
#+END_SRC
*** TODO Sync email
#+BEGIN_SRC conf
# Just use one script for that. Merge with the script under ~/script
macro index,pager o "<shell-escape>$HOME/.mutt/bin/get_new_mail.sh<enter>"
macro index,pager O "<shell-escape>$HOME/.mutt/bin/get_new_mail.sh all<enter>"
#+END_SRC
*** Copy and move dialogs
#+BEGIN_SRC conf
macro index C "<copy-message>?<toggle-mailboxes>" "copy a message to a mailbox"
macro index M "<save-message>?<toggle-mailboxes>" "move a message to a mailbox"
#+END_SRC
*** Quickly change mailboxes
#+BEGIN_SRC conf
macro index,pager c "<change-folder>?<toggle-mailboxes>" "change folder"
macro index,pager gm "<change-folder>+gmail/Inbox<enter>" "go to inbox"
macro index,pager ge "<change-folder>+esrf/Inbox<enter>" "go to inbox"
macro index,pager gu "<change-folder>+ulg/Inbox<enter>" "go to inbox"
#+END_SRC
*** TODO Labels
#+BEGIN_SRC conf
bind index,pager y edit-label
#+END_SRC
*** Open in Vim
#+BEGIN_SRC conf
bind index,pager V noop
macro index,pager V "|nvim -u ~/.vim/vimrc.mutt -c 'setlocal ft=mail' -c 'setlocal buftype=nofile' -<enter>" "open in vim"
#+END_SRC
*** Make quick html view macro
#+BEGIN_SRC conf
bind index,pager H noop # Unbinds V from version
macro index,pager H "<view-attachments><search>html<enter><view-mailcap><exit>"
#+END_SRC
*** Mouse wheel
#+BEGIN_SRC conf
bind pager \031 previous-line # Mouse wheel
bind pager \005 next-line # Mouse wheel
#+END_SRC
*** TODO Contacts
#+BEGIN_SRC conf
macro pager \Ca "<pipe-message> goobook add<return>" "add the sender address to Google contacts"
#+END_SRC
*** Compose
#+BEGIN_SRC conf
bind compose p postpone-message
macro attach,compose \Cw "<pipe-entry> urlview<enter>" "call urlview to open links"
bind compose R rename-attachment
bind compose a attach-file
#+END_SRC
**** TODO Attach file using GUI File Manager
#+BEGIN_SRC conf
macro compose A "<shell-escape>bash $HOME/.mutt/bin/attach-file.sh<enter><enter-command>source /tmp/muttpick<enter>" "Attach with GUI"
#+END_SRC
**** TODO - Write html emails using markdown
#+BEGIN_SRC conf
# macro compose M "F pandoc -s -f markdown -t html \ny^T^Utext/html; charset=us-ascii\n"
#+END_SRC
**** TODO Open another instance of neomutt in readonly mode while composing
#+BEGIN_SRC conf
macro compose M "<shell-escape>termite -e \"neomutt -R\"<enter>"
#+END_SRC
*** TODO Sidebar
#+BEGIN_SRC conf
bind index,pager \Ck sidebar-prev
bind index,pager \Cj sidebar-next
bind index,pager \Co sidebar-open
bind index,pager \Cp sidebar-prev-new
bind index,pager \Cn sidebar-next-new
bind index,pager B sidebar-toggle-visible
#+END_SRC
*** Attachments
#+BEGIN_SRC conf
bind attach <return> view-mailcap
macro attach W <save-entry><kill-line>~/Downloads/<enter>y "Save entry"
#+END_SRC
** Colors
*** Basic colors
#+BEGIN_SRC conf
color normal brightblue default
color error red default
color tilde white default
color message cyan default
color markers red black
color attachment black default
color search brightmagenta default
color status brightblue white
color indicator brightwhite yellow
color tree yellow default
# basic monocolor screen
mono bold bold
mono underline underline
mono indicator reverse
mono error bold
#+END_SRC
*** Index
#+BEGIN_SRC conf
#color index red default "~D(!~p|~p)" # deleted
#color index white default ~F # flagged
#color index brightred default ~= # duplicate messages
#color index brightcyan default "~A!~N!~T!~p!~Q!~F!~D!~P" # the rest
#color index J_base default "~A~N!~T!~p!~Q!~F!~D" # the rest, new
color index red default "~A" # all messages
color index brightred default "~E" # expired messages
color index blue default "~N" # new messages
color index blue default "~O" # old messages
color index brightmagenta default "~Q" # messages that have been replied to
color index brightcyan default "~R" # read messages
color index blue default "~U" # unread messages
color index blue default "~U~$" # unread, unreferenced messages
color index brightblue default "~v" # messages part of a collapsed thread
color index brightblue default "~P" # messages from me
color index cyan default "~p!~F" # messages to me
color index cyan default "~N~p!~F" # new messages to me
color index cyan default "~U~p!~F" # unread messages to me
color index brightcyan default "~R~p!~F" # messages to me
color index red default "~F" # flagged messages
color index red default "~F~p" # flagged messages to me
color index red default "~N~F" # new flagged messages
color index red default "~N~F~p" # new flagged messages to me
color index red default "~U~F~p" # new flagged messages to me
color index white red "~D" # deleted messages
color index brightgreen default "~v~(!~N)" # collapsed thread with no unread
color index yellow default "~v~(~N)" # collapsed thread with some unread
color index green default "~N~v~(~N)" # collapsed thread with unread parent
# statusbg used to indicated flagged when foreground color shows other status
# for collapsed thread
color index red white "~v~(~F)!~N" # collapsed thread with flagged, no unread
color index yellow white "~v~(~F~N)" # collapsed thread with some unread & flagged
color index green white "~N~v~(~F~N)" # collapsed thread with unread parent & flagged
color index green white "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged
color index cyan white "~v~(~p)" # collapsed thread with unread parent, no unread inside, some to me directly
color index yellow red "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial)
#color index yellow default "~(~N)" # messages in threads with some unread
#color index green default "~S" # superseded messages
#color index red default "~T" # tagged messages
#color index brightred red "~=" # duplicated messages
#+END_SRC
*** Message headers
#+BEGIN_SRC conf
color hdrdefault brightcyan default
color header brightblue default "^(From)"
color header blue default "^(Subject)"
#+END_SRC
*** Body
#+BEGIN_SRC conf
color quoted blue default
color quoted1 cyan default
color quoted2 yellow default
color quoted3 red default
color quoted4 brightred default
color signature brightcyan default
color bold white default
color underline white default
color normal default default
color body brightgreen default "[;:][-o][)/(|]" # emoticons
color body brightgreen default "[;:][)(|]" # emoticons
color body brightgreen default "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\
|FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\
|IRL|RTFM|ROTFL|ROFL|YMMV)[*]?"
color body brightgreen default "[ ][*][^*]*[*][ ]?" # more emoticon?
color body brightgreen default "[ ]?[*][^*]*[*][ ]" # more emoticon?
#+END_SRC
*** PGP
#+BEGIN_SRC conf
color body red default "(BAD signature)"
color body cyan default "(Good signature)"
color body brightwhite default "^gpg: Good signature .*"
color body brightblue default "^gpg: "
color body brightblue red "^gpg: BAD signature from.*"
mono body bold "^gpg: Good signature"
mono body bold "^gpg: BAD signature from.*"
#+END_SRC
*** Urls
#+BEGIN_SRC conf
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
#+END_SRC
*** Emails
#+BEGIN_SRC conf
# color body J_magent default "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
#+END_SRC
*** Various smilies and the like
#+BEGIN_SRC conf
#color body brightblack default "<[Gg]>" # <g>
#color body brightblack default "<[Bb][Gg]>" # <bg>
#color body yellow default " [;:]-*[})>{(<|]" # :-) etc...
# *bold*
#color body blue default "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
#mono body bold "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
# _underline_
#color body blue default "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
#mono body underline "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
# /italic/ (Sometimes gets directory names)
#color body blue default "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
#mono body underline "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
# Border lines.
#color body blue default "( *[-+=#*~_]){6,}"
#folder-hook . "color status J_black J_status "
#folder-hook gmail/inbox "color status J_black yellow "
#folder-hook gmail/important "color status J_black yellow "
#+END_SRC
** Sidebar
#+BEGIN_SRC conf
# Should the Sidebar be shown?
set sidebar_visible = yes
# How wide should the Sidebar be in screen columns?
# Note: Some characters, e.g. Chinese, take up two columns each.
set sidebar_width = 20
# Should the mailbox paths be abbreviated?
set sidebar_short_path = yes
# When abbreviating mailbox path names, use any of these characters as path
# separators. Only the part after the last separators will be shown.
# For file folders '/' is good. For IMAP folders, often '.' is useful.
set sidebar_delim_chars = '/.'
# If the mailbox path is abbreviated, should it be indented?
set sidebar_folder_indent = yes
# Indent mailbox paths with this string.
set sidebar_indent_string = ' '
# Make the Sidebar only display mailboxes that contain new, or flagged,
# mail.
set sidebar_new_mail_only = no
# Any mailboxes that are whitelisted will always be visible, even if the
# sidebar_new_mail_only option is enabled.
# sidebar_whitelist '/home/user/mailbox1'
# sidebar_whitelist '/home/user/mailbox2'
# When searching for mailboxes containing new mail, should the search wrap
# around when it reaches the end of the list?
set sidebar_next_new_wrap = no
# Show the Sidebar on the right-hand side of the screen
set sidebar_on_right = no
# The character to use as the divider between the Sidebar and the other Mutt
# panels.
# Note: Only the first character of this string is used.
set sidebar_divider_char = '│'
# Enable extended buffy mode to calculate total, new, and flagged
# message counts for each mailbox.
set mail_check_stats
# Display the Sidebar mailboxes using this format string.
set sidebar_format = '%B%?F? [%F]?%* %?N?%N/?%S'
# Sort the mailboxes in the Sidebar using this method:
# count - total number of messages
# flagged - number of flagged messages
# new - number of new messages
# path - mailbox path
# unsorted - do not sort the mailboxes
set sidebar_sort_method = 'unsorted'
#+END_SRC
** TODO [#A] Searching using Mu
#+begin_src conf
# mutt macros for mu
macro index \Cf "<shell-escape>mu find --clearlinks --format=links --linksdir=~/.mail/search " \
"mu find"
macro index gf "<change-folder-readonly>~/.mail/search<enter>" \
"mu find results"
#+end_src
** Contacts with Mu
#+BEGIN_SRC conf
# set query_command="goobook query '%s'"
# set query_command="lbdbq '%s'"
set query_command="mu cfind '%s' -o mutt-ab"
bind editor <Tab> complete-query
#+END_SRC
** Paths
#+BEGIN_SRC conf
set folder = ~/.mail # mail location
set alias_file = ~/.mutt/alias # where to store aliases
set header_cache = ~/.mutt/cache/headers # where to store headers
set message_cachedir = ~/.mutt/cache/bodies # where to store bodies
set certificate_file = ~/.mutt/certificates # where to store certs
# set mailcap_path = ~/.mutt/config/mailcap # entries for filetypes
set tmpdir = ~/.mutt/temp # where to keep temp files
#+END_SRC
** TODO Mailcap configuration
** TODO Print
https://unix.stackexchange.com/questions/20456/pretty-print-mails-from-mutt
#+BEGIN_SRC conf
set print_command="$HOME/.mutt/bin/mutt_print.sh"
#+END_SRC
** Accounts
#+BEGIN_SRC conf
set spoolfile = "+gmail/Inbox" # Default inbox
set realname = "Dehaeze Thomas"
set from = "dehaeze.thomas@gmail.com"
folder-hook gmail/* source ~/.mutt/accounts/gmail
folder-hook esrf/* source ~/.mutt/accounts/esrf
folder-hook ulg/* source ~/.mutt/accounts/ulg
#+END_SRC
*** Gmail
**** Configuration
#+begin_src conf :tangle ~/.mutt/accounts/gmail :comments none
set from = "dehaeze.thomas@gmail.com"
set sendmail = "msmtp -a gmail"
# Other special folders.
set mbox = "+gmail/Archive"
set record = "+gmail/Sent"
set postponed = "+gmail/Drafts"
set signature = "~/.mutt/accounts/gmail.signature"
color status cyan default
macro index,pager d \
"<save-message>+gmail/Archive<enter>" \
"Move message to the Archive"
macro index,pager D \
"<save-message>+gmail/Trash<enter>" \
"Move message to the Trash"
#+end_src
**** Signature
#+begin_src conf :tangle ~/.mutt/accounts/gmail.signature :comments none
Thomas Dehaeze
#+end_src
*** ESRF
**** Configuration
#+begin_src conf :tangle ~/.mutt/accounts/esrf :comments none
set from = "thomas.dehaeze@esrf.fr"
set sendmail = "msmtp -a esrf"
# Other special folders.
set mbox = "+esrf/Archive"
set record = "+esrf/Sent"
set postponed = "+esrf/Drafts"
set signature = "~/.mutt/accounts/esrf.signature"
color status cyan default
macro index,pager d \
"<save-message>+esrf/Archive<enter>" \
"Move message to the Archive"
macro index,pager D \
"<save-message>+esrf/Trash<enter>" \
"Move message to the Trash"
#+end_src
**** Signature
#+begin_src conf :tangle ~/.mutt/accounts/esrf.signature :comments none
Thomas Dehaeze
#+end_src
*** ULG
**** Configuration
#+begin_src conf :tangle ~/.mutt/accounts/ulg :comments none
set from = "thomas.dehaeze@doct.uliege.be"
set sendmail = "msmtp -a ulg"
# Other special folders.
set mbox = "+ulg/Archive"
set record = "+ulg/Sent"
set postponed = "+ulg/Drafts"
set signature = "~/.mutt/accounts/ulg.signature"
color status cyan default
macro index,pager d \
"<save-message>+ulg/Archive<enter>" \
"Move message to the Archive"
macro index,pager D \
"<save-message>+ulg/Trash<enter>" \
"Move message to the Trash"
#+end_src
**** Signature
#+begin_src conf :tangle ~/.mutt/accounts/ulg.signature :comments none
Thomas Dehaeze
#+end_src
** Mailboxes to show in the sidebar.
#+BEGIN_SRC conf
mailboxes \
+search \
"+Google" \
+gmail/Inbox \
+gmail/Archive \
+gmail/Drafts \
+gmail/Sent \
+gmail/Trash \
"+ESRF" \
+esrf/Inbox \
+esrf/Archive \
+esrf/Drafts \
+esrf/Sent \
+esrf/Trash \
"+ULG" \
+ulg/Inbox \
+ulg/Archive \
+ulg/Drafts \
+ulg/Sent \
+ulg/Trash \
set sendmail_wait = 0 # no please don't silently fail, email is important
unset record
#+END_SRC
** Use Vim to compose email, with a few default options.
#+BEGIN_SRC conf
set editor = "nvim -u ~/.vim/vimrc.mutt -c ':Goyo' -c '/\\n--' -c ':noh' -c 'startinsert'"
#+END_SRC
** Basic Options
#+BEGIN_SRC conf
set wait_key = no # shut up, mutt
set mbox_type = Maildir # mailbox type
set help = no # No top bar
set timeout = 3 # idle time before scanning
set sleep_time = 0 # how long NeoMutt may wait after an error message
set mail_check = 0 # minimum time between scans
unset move # gmail does that
set delete # don't ask, just do
unset confirmappend # don't ask, just do!
set quit # don't ask, just do!!
set mark_old = no # read/new is good enough for me
set beep_new # bell on new mails
# set pipe_decode # strip headers and eval mimes when piping
set thorough_search # strip headers and eval mimes before searching
set send_charset="us-ascii:utf-8:iso-8859-1"
set use_from # respect the From: address the editor sends back
#+END_SRC
** Status Bar
#+BEGIN_SRC conf
set status_on_top = no
set status_chars = " *%A"
set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───"
#+END_SRC
** Index View Options
#+BEGIN_SRC conf
set date_format = "%d/%m/%y %H:%M"
set index_format = "[%Z] %D %-20.20F %s"
# set index_format = " %Z %<[y?%<[m?%<[d?%[ %H:%M]&%[ %a %d]>&%[ %b %d]>&%[%d/%m/%Y]> %-30.30F %<M?(%2M)& > %?GS?%GS& ?%?GE?%GE& ?%?GA?%GA& ? %g %s"
# set index_format='%4C %S %[%y.%m.%d] %-18.18n %?GU?%GU& ? %?GR?%GR& ? %?GI?%GI& ? %s'
set sort = threads # like gmail
set sort_aux = reverse-last-date-received # like gmail
set uncollapse_jump # don't collapse on an unread message
set sort_re # thread based on regex
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
set folder_format = "%2C %t %N %8s %f"
#+END_SRC
** Pager View Options
#+BEGIN_SRC conf
set pager_index_lines = 10 # number of index lines to show
set pager_context = 3 # number of context lines to show
set pager_stop # don't go to next message automatically
set menu_scroll # scroll in menus
set tilde # show tildes like in vim
set markers = no # no ugly plus signs
set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
auto_view text/html # view html automatically
alternative_order text/plain text/enriched text/html # save html for last
#+END_SRC
** Compose View Options
#+BEGIN_SRC conf
set envelope_from # which from?
set sig_dashes # dashes before sig
set sig_on_top # the signature is just below the response
set edit_headers # show headers when composing
set fast_reply # skip to compose when replying
set askcc # ask for CC:
set fcc_attach # save attachments with the body
set mime_forward = yes # forward attachments as part of body
set forward_format = "Fwd: %s" # format of subject when forwarding
set forward_decode # decode when forwarding
set attribution = "On %d, %n wrote:" # format of quoting header
set reply_to # reply to Reply to: field
set reverse_name # reply as whomever it was to
set include # include message in replies
set forward_quote # include message in forwards
#+END_SRC
** Attachment View Options
#+BEGIN_SRC conf
set attach_format = "[%D %t] %2n [%-7.7m/%10.10M] %.40d %> [%s] "
#+END_SRC
** Headers
#+BEGIN_SRC conf
ignore * # ignore all headers
unignore from: to: cc: date: subject: # show only these
unhdr_order *
hdr_order from: to: cc: date: subject: # and in this order
#+END_SRC
** Progress Bar
#+BEGIN_SRC conf
color progress white red
#+END_SRC
** TODO Open PDF from mail
=~/scripts/openfile.sh=
** TODO [#B] Integrate with contact manager
** TODO Integration with org-mode
https://www.donarmstrong.com/posts/org_mode_mutt_capture/
https://upsilon.cc/~zack/blog/posts/2010/02/integrating_Mutt_with_Org-mode/
** TODO Send HTML mails using Markdown
https://unix.stackexchange.com/questions/108485/send-email-written-in-markdown-using-mutt/424162
https://github.com/Roguelazer/muttdown
** TODO Attachments
*** Attach multiple files at once
First, tag the files you want to send using =t=, then =;= to apply the action on all tagged files and finally =<enter>= to add them all
*** TODO Add attachment using GUI file manager
*** Cheatsheet
| Command | Usage |
|---------+---------------|
| =<spc>= | Open the file |
** TODO Open Url from mail
#+BEGIN_SRC bash
yay -S urlview
#+END_SRC
** TODO View emails while composing
https://wiki.archlinux.org/index.php/Mutt#Display_another_email_while_composing
** TODO Integration with calendar application
http://jasonwryan.com/blog/2014/04/05/calendar/
https://gist.github.com/guiniol/5109c5bd953af950e0530b720507d704
=~/scripts/printics.sh=
* TODO Notification system
A script (=~/scripts/checkmail.sh=) is used to retreive new mails and use =notify=send= is there are new received mails.

981
dotfiles/music.org Normal file
View File

@ -0,0 +1,981 @@
#+TITLE: Music Configuration
* NCMPCPP
https://rybczak.net/ncmpcpp/
Cheatsheet: https://pkgbuild.com/~jelle/ncmpcpp/
** Config
:PROPERTIES:
:header-args:conf: :tangle ~/.ncmpcpp/config
:header-args:conf+: :comments both :mkdirp yes
:END:
#+BEGIN_SRC conf
##############################################################################
## This is the example configuration file. Copy it to $HOME/.ncmpcpp/config ##
## or $XDG_CONFIG_HOME/ncmpcpp/config and set up your preferences. ##
##############################################################################
#
##### directories ######
##
## Directory for storing ncmpcpp related files. Changing it is useful if you
## want to store everything somewhere else and provide command line setting for
## alternative location to config file which defines that while launching
## ncmpcpp.
##
#
ncmpcpp_directory = ~/.config/.ncmpcpp
#
##
## Directory for storing downloaded lyrics. It defaults to ~/.lyrics since other
## MPD clients (eg. ncmpc) also use that location.
##
#
#lyrics_directory = ~/.lyrics
#
##### connection settings #####
#
mpd_host = localhost
mpd_port = 6600
#mpd_connection_timeout = 5
## Needed for tag editor and file operations to work.
##
mpd_music_dir = ~/Music
#
#mpd_crossfade_time = 5
#
##### music visualizer #####
##
## Note: In order to make music visualizer work you'll need to use mpd fifo
## output, whose format parameter has to be set to 44100:16:1 for mono
## visualization or 44100:16:2 for stereo visualization. Example configuration
## (it has to be put into mpd.conf):
##
## audio_output {
## type "fifo"
## name "Visualizer feed"
## path "/tmp/mpd.fifo"
## format "44100:16:2"
## }
##
#
#visualizer_fifo_path = /tmp/mpd.fifo
#
##
## Note: Below parameter is needed for ncmpcpp to determine which output
## provides data for visualizer and thus allow syncing between visualization and
## sound as currently there are some problems with it.
##
#
#visualizer_output_name = Visualizer feed
#
##
## If you set format to 44100:16:2, make it 'yes'.
##
#visualizer_in_stereo = yes
#
##
## Note: Below parameter defines how often ncmpcpp has to "synchronize"
## visualizer and audio outputs. 30 seconds is optimal value, but if you
## experience synchronization problems, set it to lower value. Keep in mind
## that sane values start with >=10.
##
#
#visualizer_sync_interval = 30
#
##
## Note: To enable spectrum frequency visualization you need to compile ncmpcpp
## with fftw3 support.
##
#
## Available values: spectrum, wave, wave_filled, ellipse.
##
#visualizer_type = wave
#
#visualizer_look = ●▮
#
#visualizer_color = blue, cyan, green, yellow, magenta, red
#
## Alternative subset of 256 colors for terminals that support it.
##
#visualizer_color = 41, 83, 119, 155, 185, 215, 209, 203, 197, 161
#
##### system encoding #####
##
## ncmpcpp should detect your charset encoding but if it failed to do so, you
## can specify charset encoding you are using here.
##
## Note: You can see whether your ncmpcpp build supports charset detection by
## checking output of `ncmpcpp --version`.
##
## Note: Since MPD uses UTF-8 by default, setting this option makes sense only
## if your encoding is different.
##
#
#system_encoding = ""
#
##### delays #####
#
## Time of inactivity (in seconds) after playlist highlighting will be disabled
## (0 = always on).
##
#playlist_disable_highlight_delay = 5
#
## Defines how long messages are supposed to be visible.
##
#message_delay_time = 5
#
##### song format #####
##
## For a song format you can use:
##
## %l - length
## %f - filename
## %D - directory
## %a - artist
## %A - album artist
## %t - title
## %b - album
## %y - date
## %n - track number (01/12 -> 01)
## %N - full track info (01/12 -> 01/12)
## %g - genre
## %c - composer
## %p - performer
## %d - disc
## %C - comment
## %P - priority
## $R - begin right alignment
##
## If you want to make sure that a part of the format is displayed only when
## certain tags are present, you can archieve it by grouping them with brackets,
## e.g. '{%a - %t}' will be evaluated to 'ARTIST - TITLE' if both tags are
## present or '' otherwise. It is also possible to define a list of
## alternatives by providing several groups and separating them with '|',
## e.g. '{%t}|{%f}' will be evaluated to 'TITLE' or 'FILENAME' if the former is
## not present.
##
## Note: If you want to set limit on maximal length of a tag, just put the
## appropriate number between % and character that defines tag type, e.g. to
## make album take max. 20 terminal cells, use '%20b'.
##
## In addition, formats support markers used for text attributes. They are
## followed by character '$'. After that you can put:
##
## - 0 - default window color (discards all other colors)
## - 1 - black
## - 2 - red
## - 3 - green
## - 4 - yellow
## - 5 - blue
## - 6 - magenta
## - 7 - cyan
## - 8 - white
## - 9 - end of current color
## - b - bold text
## - u - underline text
## - r - reverse colors
## - a - use alternative character set
##
## If you don't want to use a non-color attribute anymore, just put it again,
## but this time insert character '/' between '$' and attribute character,
## e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag or filename with
## reversed colors.
##
## If you want to use 256 colors and/or background colors in formats (the naming
## scheme is described below in section about color definitions), it can be done
## with the syntax $(COLOR), e.g. to set the artist tag to one of the
## non-standard colors and make it have yellow background, you need to write
## $(197_yellow)%a$(end). Note that for standard colors this is interchangable
## with attributes listed above.
##
## Note: colors can be nested.
##
#
#song_list_format = {%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
#
#song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f}
#
#song_library_format = {%n - }{%t}|{%f}
#
#alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
#
#alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
#
#current_item_prefix = $(yellow)$r
#
#current_item_suffix = $/r$(end)
#
#current_item_inactive_column_prefix = $(white)$r
#
#current_item_inactive_column_suffix = $/r$(end)
#
#now_playing_prefix = $b
#
#now_playing_suffix = $/b
#
#browser_playlist_prefix = "$2playlist$9 "
#
#selected_item_prefix = $6
#
#selected_item_suffix = $9
#
#modified_item_prefix = $3> $9
#
##
## Note: attributes are not supported for the following variables.
##
#song_window_title_format = {%a - }{%t}|{%f}
##
## Note: Below variables are used for sorting songs in browser. The sort mode
## determines how songs are sorted, and can be used in combination with a sort
## format to specify a custom sorting format. Available values for
## browser_sort_mode are "name", "mtime", "format" and "noop".
##
#
#browser_sort_mode = name
#
#browser_sort_format = {%a - }{%t}|{%f} {(%l)}
#
##### columns settings #####
##
## syntax of song columns list format is "column column etc."
##
## - syntax for each column is:
##
## (width of the column)[color of the column]{displayed tag}
##
## Note: Width is by default in %, if you want a column to have fixed size, add
## 'f' after the value, e.g. (10)[white]{a} will be the column that take 10% of
## screen (so the real width will depend on actual screen size), whereas
## (10f)[white]{a} will take 10 terminal cells, no matter how wide the screen
## is.
##
## - color is optional (if you want the default one, leave the field empty).
##
## Note: You can give a column additional attributes by putting appropriate
## character after displayed tag character. Available attributes are:
##
## - r - column will be right aligned
## - E - if tag is empty, empty tag marker won't be displayed
##
## You can also:
##
## - give a column custom name by putting it after attributes, separated with
## character ':', e.g. {lr:Length} gives you right aligned column of lengths
## named "Length".
##
## - define sequence of tags, that have to be displayed in case predecessor is
## empty in a way similar to the one in classic song format, i.e. using '|'
## character, e.g. {a|c|p:Owner} creates column named "Owner" that tries to
## display artist tag and then composer and performer if previous ones are not
## available.
##
#
#song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l}
#
##### various settings #####
#
##
## Note: Custom command that will be executed each time song changes. Useful for
## notifications etc.
##
#execute_on_song_change = ""
#
##
## Note: Custom command that will be executed each time player state
## changes. The environment variable MPD_PLAYER_STATE is set to the current
## state (either unknown, play, pause, or stop) for its duration.
##
#
#execute_on_player_state_change = ""
#
#playlist_show_mpd_host = no
#
#playlist_show_remaining_time = no
#
#playlist_shorten_total_times = no
#
#playlist_separate_albums = no
#
##
## Note: Possible display modes: classic, columns.
##
#playlist_display_mode = columns
#
#browser_display_mode = classic
#
#search_engine_display_mode = classic
#
#playlist_editor_display_mode = classic
#
#discard_colors_if_item_is_selected = yes
#
#show_duplicate_tags = yes
#
#incremental_seeking = yes
#
#seek_time = 1
#
#volume_change_step = 2
#
#autocenter_mode = no
#
#centered_cursor = no
#
##
## Note: You can specify third character which will be used to build 'empty'
## part of progressbar.
##
#progressbar_look = =>
#
## Available values: database, playlist.
##
#default_place_to_search_in = database
#
## Available values: classic, alternative.
##
#user_interface = classic
#
#data_fetching_delay = yes
#
## Available values: artist, album_artist, date, genre, composer, performer.
##
#media_library_primary_tag = artist
#
#media_library_albums_split_by_date = yes
#
## Available values: wrapped, normal.
##
#default_find_mode = wrapped
#
#default_tag_editor_pattern = %n - %t
#
#header_visibility = yes
#
#statusbar_visibility = yes
#
#titles_visibility = yes
#
#header_text_scrolling = yes
#
#cyclic_scrolling = no
#
#lines_scrolled = 2
#
#lyrics_fetchers = lyricwiki, azlyrics, genius, sing365, lyricsmania, metrolyrics, justsomelyrics, jahlyrics, plyrics, tekstowo, internet
#
#follow_now_playing_lyrics = no
#
#fetch_lyrics_for_current_song_in_background = no
#
#store_lyrics_in_song_dir = no
#
#generate_win32_compatible_filenames = yes
#
#allow_for_physical_item_deletion = no
#
##
## Note: If you set this variable, ncmpcpp will try to get info from last.fm in
## language you set and if it fails, it will fall back to english. Otherwise it
## will use english the first time.
##
## Note: Language has to be expressed as an ISO 639 alpha-2 code.
##
#lastfm_preferred_language = en
#
#space_add_mode = add_remove
#
#show_hidden_files_in_local_browser = no
#
##
## How shall screen switcher work?
##
## - "previous" - switch between the current and previous screen.
## - "screen1,...,screenN" - switch between given sequence of screens.
##
## Screens available for use: help, playlist, browser, search_engine,
## media_library, playlist_editor, tag_editor, outputs, visualizer, clock,
## lyrics, last_fm.
##
#screen_switcher_mode = playlist, browser
#
##
## Note: You can define startup screen by choosing screen from the list above.
##
#startup_screen = playlist
#
##
## Note: You can define startup slave screen by choosing screen from the list
## above or an empty value for no slave screen.
##
#startup_slave_screen = ""
#
#startup_slave_screen_focus = no
#
##
## Default width of locked screen (in %). Acceptable values are from 20 to 80.
##
#
#locked_screen_width_part = 50
#
#ask_for_locked_screen_width_part = yes
#
#jump_to_now_playing_song_at_start = yes
#
#ask_before_clearing_playlists = yes
#
#clock_display_seconds = no
#
#display_volume_level = yes
#
#display_bitrate = no
#
#display_remaining_time = no
#
## Available values: none, basic, extended, perl.
##
#regular_expressions = perl
#
##
## Note: if below is enabled, ncmpcpp will ignore leading "The" word while
## sorting items in browser, tags in media library, etc.
##
#ignore_leading_the = no
#
##
## Note: if below is enabled, ncmpcpp will ignore diacritics while searching and
## filtering lists. This takes an effect only if boost was compiled with ICU
## support.
##
#ignore_diacritics = no
#
#block_search_constraints_change_if_items_found = yes
#
#mouse_support = yes
#
#mouse_list_scroll_whole_page = yes
#
#empty_tag_marker = <empty>
#
#tags_separator = " | "
#
#tag_editor_extended_numeration = no
#
#media_library_sort_by_mtime = no
#
#enable_window_title = yes
#
##
## Note: You can choose default search mode for search engine. Available modes
## are:
##
## - 1 - use mpd built-in searching (no regexes, pattern matching)
##
## - 2 - use ncmpcpp searching (pattern matching with support for regexes, but
## if your mpd is on a remote machine, downloading big database to process
## it can take a while
##
## - 3 - match only exact values (this mode uses mpd function for searching in
## database and local one for searching in current playlist)
##
#
#search_engine_default_search_mode = 1
#
#external_editor = nano
#
## Note: set to yes if external editor is a console application.
##
#use_console_editor = yes
#
##### colors definitions #####
##
## It is possible to set a background color by setting a color value
## "<foreground>_<background>", e.g. red_black will set foregound color to red
## and background color to black.
##
## In addition, for terminals that support 256 colors it is possible to set one
## of them by using a number in range [1, 256] instead of color name,
## e.g. numerical value corresponding to red_black is 2_1. To find out if the
## terminal supports 256 colors, run ncmpcpp and check out the bottom of the
## help screen for list of available colors and their numerical values.
##
## What is more, there are two special values for the background color:
## "transparent" and "current". The first one explicitly sets the background to
## be transparent, while the second one allows you to preserve current
## background color and change only the foreground one. It's used implicitly
## when background color is not specified.
##
## Moreover, it is possible to attach format information to selected color
## variables by appending to their end a colon followed by one or more format
## flags, e.g. black:b or red:ur. The following variables support this syntax:
## visualizer_color, color1, color2, empty_tag_color, volume_color,
## state_line_color, state_flags_color, progressbar_color,
## progressbar_elapsed_color, player_state_color, statusbar_time_color,
## alternative_ui_separator_color.
##
## Note: due to technical limitations of older ncurses version, if 256 colors
## are used there is a possibility that you'll be able to use only colors with
## transparent background.
#
#colors_enabled = yes
#
#empty_tag_color = cyan
#
#header_window_color = default
#
#volume_color = default
#
#state_line_color = default
#
#state_flags_color = default:b
#
#main_window_color = yellow
#
#color1 = white
#
#color2 = green
#
#progressbar_color = black:b
#
#progressbar_elapsed_color = green:b
#
#statusbar_color = default
#
#statusbar_time_color = default:b
#
#player_state_color = default:b
#
#alternative_ui_separator_color = black:b
#
#window_border_color = green
#
#active_window_border = red
#
#+END_SRC
** Bindings
:PROPERTIES:
:header-args:conf: :tangle ~/.ncmpcpp/bindings
:header-args:conf+: :comments both :mkdirp yes
:END:
#+BEGIN_SRC conf
# =============================================================
def_key "l"
next_column
def_key "h"
previous_column
def_key "k"
scroll_up
def_key "j"
scroll_down
# =============================================================
#+END_SRC
* MPD
:PROPERTIES:
:header-args:conf: :tangle ~/.config/mpd/mpd.conf
:header-args:conf+: :comments both :mkdirp yes
:END:
https://www.musicpd.org/
** Files and directories
#+BEGIN_SRC conf
# This setting controls the top directory which MPD will search to discover the
# available audio files and add them to the daemon's online database. This
# setting defaults to the XDG directory, otherwise the music directory will be
# be disabled and audio files will only be accepted over ipc socket (using
# file:// protocol) or streaming files over an accepted protocol.
music_directory "~/Music"
# This setting sets the MPD internal playlist directory. The purpose of this
# directory is storage for playlists created by MPD. The server will use
# playlist files not created by the server but only if they are in the MPD
# format. This setting defaults to playlist saving being disabled.
playlist_directory "~/.config/mpd/playlists"
# This setting sets the location of the MPD database. This file is used to
# load the database at server start up and store the database while the
# server is not up. This setting defaults to disabled which will allow
# MPD to accept files over ipc socket (using file:// protocol) or streaming
# files over an accepted protocol.
#
db_file "~/.config/mpd/database"
# These settings are the locations for the daemon log files for the daemon.
# These logs are great for troubleshooting, depending on your log_level
# settings.
#
# The special value "syslog" makes MPD use the local syslog daemon. This
# setting defaults to logging to syslog, otherwise logging is disabled.
log_file "~/.config/mpd/log"
# This setting sets the location of the file which stores the process ID
# for use of mpd --kill and some init scripts. This setting is disabled by
# default and the pid file will not be stored.
#
pid_file "~/.config/mpd/pid"
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
# it was brought down. This setting is disabled by default and the server
# state will be reset on server start up.
state_file "~/.config/mpd/state"
# The location of the sticker database. This is a database which
# manages dynamic information attached to songs.
#sticker_file "~/.config/mpd/sticker.sql"
#+END_SRC
** General music daemon options
#+BEGIN_SRC conf
# This setting specifies the user that MPD will run as. MPD should never run as
# root and you may use this setting to make MPD change its user ID after
# initialization. This setting is disabled by default and MPD is run as the
# current user.
#
#user "nobody"
#
# This setting specifies the group that MPD will run as. If not specified
# primary group of user specified with "user" setting will be used (if set).
# This is useful if MPD needs to be a member of group such as "audio" to
# have permission to use sound card.
#
#group "nogroup"
#
# This setting sets the address for the daemon to listen on. Careful attention
# should be paid if this is assigned to anything other then the default, any.
# This setting can deny access to control of the daemon. Not effective if
# systemd socket activiation is in use.
#
# For network
#bind_to_address "any"
#
# And for Unix Socket
#bind_to_address "~/.mpd/socket"
#
# This setting is the TCP port that is desired for the daemon to get assigned
# to.
#
#port "6600"
#
# This setting controls the type of information which is logged. Available
# setting arguments are "default", "secure" or "verbose". The "verbose" setting
# argument is recommended for troubleshooting, though can quickly stretch
# available resources on limited hardware storage.
#
#log_level "default"
#
# Setting "restore_paused" to "yes" puts MPD into pause mode instead
# of starting playback after startup.
#
#restore_paused "no"
#
# This setting enables MPD to create playlists in a format usable by other
# music players.
#
#save_absolute_paths_in_playlists "no"
#
# This setting defines a list of tag types that will be extracted during the
# audio file discovery process. The complete list of possible values can be
# found in the user manual.
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
#
# This example just enables the "comment" tag without disabling all
# the other supported tags:
#metadata_to_use "+comment"
#
# This setting enables automatic update of MPD's database when files in
# music_directory are changed.
#
#auto_update "yes"
#
# Limit the depth of the directories being watched, 0 means only watch
# the music directory itself. There is no limit by default.
#
#auto_update_depth "3"
#
#+END_SRC
** Symbolic link behavior
#+BEGIN_SRC conf
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links outside of the configured music_directory.
#
#follow_outside_symlinks "yes"
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links inside of the configured music_directory.
#
#follow_inside_symlinks "yes"
#
#+END_SRC
** Zeroconf / Avahi Service Discovery
#+BEGIN_SRC conf
# If this setting is set to "yes", service information will be published with
# Zeroconf / Avahi.
#
#zeroconf_enabled "yes"
#
# The argument to this setting will be the Zeroconf / Avahi unique name for
# this MPD server on the network. %h will be replaced with the hostname.
#
#zeroconf_name "Music Player @ %h"
#
#+END_SRC
** Permissions
#+BEGIN_SRC conf
# If this setting is set, MPD will require password authorization. The password
# setting can be specified multiple times for different password profiles.
#
#password "password@read,add,control,admin"
#
# This setting specifies the permissions a user has who has not yet logged in.
#
#default_permissions "read,add,control,admin"
#
#+END_SRC
** Database
#+BEGIN_SRC conf
#database {
# plugin "proxy"
# host "other.mpd.host"
# port "6600"
#}
#+END_SRC
** Input
#+BEGIN_SRC conf
input {
plugin "curl"
# proxy "proxy.isp.com:8080"
# proxy_user "user"
# proxy_password "password"
}
#+END_SRC
** Audio Output
#+BEGIN_SRC conf
# MPD supports various audio output types, as well as playing through multiple
# audio outputs at the same time, through multiple audio_output settings
# blocks. Setting this block is optional, though the server will only attempt
# autodetection for one sound card.
#
# An example of an ALSA output:
#
audio_output {
type "alsa"
name "My ALSA Device"
period_time "50000"
# device "hw:0,0" # optional
# mixer_type "hardware" # optional
# mixer_device "default" # optional
# mixer_control "PCM" # optional
# mixer_index "0" # optional
}
# For NCMPCPP Visualizer
audio_output {
type "fifo"
name "Visualizer feed"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
#
# An example of an OSS output:
#
#audio_output {
# type "oss"
# name "My OSS Device"
## device "/dev/dsp" # optional
## mixer_type "hardware" # optional
## mixer_device "/dev/mixer" # optional
## mixer_control "PCM" # optional
#}
#
# An example of a shout output (for streaming to Icecast):
#
#audio_output {
# type "shout"
# encoder "vorbis" # optional
# name "My Shout Stream"
# host "localhost"
# port "8000"
# mount "/mpd.ogg"
# password "hackme"
# quality "5.0"
# bitrate "128"
# format "44100:16:1"
## protocol "icecast2" # optional
## user "source" # optional
## description "My Stream Description" # optional
## url "http://example.com" # optional
## genre "jazz" # optional
## public "no" # optional
## timeout "2" # optional
## mixer_type "software" # optional
#}
#
# An example of a recorder output:
#
#audio_output {
# type "recorder"
# name "My recorder"
# encoder "vorbis" # optional, vorbis or lame
# path "/var/lib/mpd/recorder/mpd.ogg"
## quality "5.0" # do not define if bitrate is defined
# bitrate "128" # do not define if quality is defined
# format "44100:16:1"
#}
#
# An example of a httpd output (built-in HTTP streaming server):
#
#audio_output {
# type "httpd"
# name "My HTTP Stream"
# encoder "vorbis" # optional, vorbis or lame
# port "8000"
# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
## quality "5.0" # do not define if bitrate is defined
# bitrate "128" # do not define if quality is defined
# format "44100:16:1"
# max_clients "0" # optional 0=no limit
#}
#
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
#
#audio_output {
# type "pulse"
# name "My Pulse Output"
## server "remote_server" # optional
## sink "remote_server_sink" # optional
#}
#
# An example of a winmm output (Windows multimedia API).
#
#audio_output {
# type "winmm"
# name "My WinMM output"
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
# or
## device "0" # optional
## mixer_type "hardware" # optional
#}
#
# An example of an openal output.
#
#audio_output {
# type "openal"
# name "My OpenAL output"
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
#}
#
# An example of an sndio output.
#
#audio_output {
# type "sndio"
# name "sndio output"
# mixer_type "hardware"
#}
#
# An example of an OS X output:
#
#audio_output {
# type "osx"
# name "My OS X Device"
## device "Built-in Output" # optional
## channel_map "-1,-1,0,1" # optional
#}
#
## Example "pipe" output:
#
#audio_output {
# type "pipe"
# name "my pipe"
# command "aplay -f cd 2>/dev/null"
## Or if you're want to use AudioCompress
# command "AudioCompress -m | aplay -f cd 2>/dev/null"
## Or to send raw PCM stream through PCM:
# command "nc example.org 8765"
# format "44100:16:2"
#}
#
## An example of a null output (for no audio output):
#
#audio_output {
# type "null"
# name "My Null Output"
# mixer_type "none" # optional
#}
#
#+END_SRC
** Normalization automatic volume adjustments
#+BEGIN_SRC conf
# This setting specifies the type of ReplayGain to use. This setting can have
# the argument "off", "album", "track" or "auto". "auto" is a special mode that
# chooses between "track" and "album" depending on the current state of
# random playback. If random playback is enabled then "track" mode is used.
# See <http://www.replaygain.org> for more details about ReplayGain.
# This setting is off by default.
#
#replaygain "album"
#
# This setting sets the pre-amp used for files that have ReplayGain tags. By
# default this setting is disabled.
#
#replaygain_preamp "0"
#
# This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
# By default this setting is disabled.
#
#replaygain_missing_preamp "0"
#
# This setting enables or disables ReplayGain limiting.
# MPD calculates actual amplification based on the ReplayGain tags
# and replaygain_preamp / replaygain_missing_preamp setting.
# If replaygain_limit is enabled MPD will never amplify audio signal
# above its original level. If replaygain_limit is disabled such amplification
# might occur. By default this setting is enabled.
#
#replaygain_limit "yes"
#
# This setting enables on-the-fly normalization volume adjustment. This will
# result in the volume of all playing audio to be adjusted so the output has
# equal "loudness". This setting is disabled by default.
#
#volume_normalization "no"
#
#+END_SRC
** Character Encoding
#+BEGIN_SRC conf
# If file or directory names do not display correctly for your locale then you
# may need to modify this setting.
#
#filesystem_charset "UTF-8"
#+END_SRC
* Beets
:PROPERTIES:
:header-args:conf: :tangle ~/.config/beets/config.yaml
:header-args:conf+: :comments both :mkdirp yes
:END:
http://beets.io/
#+BEGIN_SRC conf
directory: ~/Music
library: ~/Music/musiclibrary.db
import:
move: yes
#+END_SRC

288
dotfiles/newsboat.org Normal file
View File

@ -0,0 +1,288 @@
#+TITLE: Newsboat Configuration
* Config
:PROPERTIES:
:header-args: :tangle ~/.config/newsboat/config
:header-args+: :comments both :mkdirp yes
:END:
#+BEGIN_SRC conf
# =============================================================
# Basic configuration
# =============================================================
# All feeds will be automatically reloaded after a certain time has passed
# auto-reload yes
auto-reload no
# reload-time 60
# suppress-first-reload yes
confirm-exit yes
external-url-viewer "urlscan -dc -r 'linkhandler {}'"
goto-first-unread no
goto-next-feed no
save-path "~/Saved Articles"
download-path "~/Downloads"
# If set to no, then the keymap hints on the bottom of screen will not be displayed.
show-keymap-hint no
feed-sort-order lastupdated
# =============================================================
# =============================================================
# Notifications
# =============================================================
notify-format "newsbeuter: %n unread articles within %f unread feeds"
notify-program notify-send
# =============================================================
# =============================================================
# Bindings
# =============================================================
bind-key j down
bind-key k up
bind-key j next articlelist
bind-key k prev articlelist
bind-key J next-feed articlelist
bind-key K prev-feed articlelist
bind-key G end
bind-key g home
bind-key d pagedown
bind-key u pageup
bind-key l open
bind-key h quit
bind-key a toggle-article-read
bind-key n next-unread
bind-key N prev-unread
bind-key D pb-download
bind-key U show-urls
# bind-key x pb-delete
bind-key t set-tag
bind-key T clear-tag
bind-key r reload # Reload the currently selected feed
bind-key R reload-all # Reload all feeds
# =============================================================
# =============================================================
# Macros - Starts with , key
# =============================================================
# Default Browser
browser "qutebrowser %u"
# Open in Browser
macro , open-in-browser
# Download Video with Youtube-DL
# TODO - Should write a script for that? Maybe open a tmux script if newsboat is in tmux pane?
macro t set browser "~/scripts/download-video.sh %u" ; open-in-browser ; set browser "qutebrowser %u"
# Download Audio with Youtube-DL
macro a set browser "~/scripts/download-audio.sh %u" ; open-in-browser ; set browser "qutebrowser %u"
# Open Video with MPV
macro v set browser "setsid nohup mpv %u &> /dev/null &" ; open-in-browser ; set browser "qutebrowser %u"
# Open With W3M
macro w set browser "w3m %u" ; open-in-browser ; set browser "qutebrowser %u"
# Copy Address to clipboard
macro c set browser "xsel -b <<<" ; open-in-browser ; set browser "qutebrowser %u"
# =============================================================
# =============================================================
# hide articles matching
# =============================================================
ignore-article "*" "title =~ \"Sponsor\""
ignore-article "*" "title =~ \"Advertisement\""
ignore-mode "display"
# =============================================================
# =============================================================
# Feedlist and Article Format
# =============================================================
feedlist-format "%4i %n %11u %t"
feedlist-title-format "N %V - Your feeds (%u unread, %t total)%?T? - tag `%T'&?"
articlelist-format "%3i %f %D %?T?|%-17T| ?%t"
articlelist-title-format "%N %V - Articles in feed '%T' (%u unread, %t total) - %U"
itemview-title-format "Article '%T'"
# =============================================================
# =============================================================
# Color Scheme
# =============================================================
include "~/.config/newsboat/colors"
# =============================================================
#+END_SRC
* Colors
:PROPERTIES:
:header-args: :tangle ~/.config/newsboat/colors
:header-args+: :comments both :mkdirp yes
:END:
#+BEGIN_SRC conf
# =============================================================
# Color Scheme
# =============================================================
highlight feedlist "^ *[0-9]+ *N " cyan cyan
highlight articlelist "^ *[0-9]+ *N " cyan cyan
highlight article "(^Feed:.*|^Title:.*|^Author:.*)" red default
highlight article "(^Link:.*|^Date:.*)" white default
highlight article "^Podcast Download URL:.*" cyan default
highlight article "^Links:" magenta black underline
highlight article "https?://[^ ]+" green default
highlight article "^(Title):.*$" blue default
highlight article "\\[[0-9][0-9]*\\]" magenta default bold
highlight article "\\[image\\ [0-9]+\\]" green default bold
highlight article "\\[embedded flash: [0-9][0-9]*\\]" green default bold
highlight article ":.*\\(link\\)$" cyan default
highlight article ":.*\\(image\\)$" blue default
highlight article ":.*\\(embedded flash\\)$" magenta default
color background default default
color listnormal default default
color listnormal_unread white default
color listfocus color255 cyan bold
color listfocus_unread color255 cyan bold
color info cyan black
color article default default
# =============================================================
#+END_SRC
* Config
:PROPERTIES:
:header-args: :tangle ~/.config/newsboat/urls
:header-args+: :comments both :mkdirp yes
:END:
#+BEGIN_SRC conf
https://lukesmith.xyz/rss.xml unix
http://www.planet.emacsen.org/atom.xml emacs
http://sachachua.com/blog/feed/ emacs
https://www.reddit.com/r/emacs/.rss reddit emacs
http://xkcd.com/rss.xml fun
https://www.youtube.com/feeds/videos.xml?channel_id=UCJM10Rp7G0h9j5S92QszJ5Q "~Tales From The Click (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCRhyS_ylPQ5GWBl1lK92ftA "~Léo - TechMaker (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCBJycsmduvYEL83R_U4JriQ "~Marques Brownlee (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCPpNtkHeCnwN7Tl5oLq4AAg "~Une chanson, l'addition (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC4HANn7TBY-xcION-eL3rLA "~Daniil le Russe (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCww2zZWg4Cf5xcRKG-ThmXQ "~Norman Fait Des Vidéos (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCf0mOxfawezlHIVuHd3L2VA "~Didi Chandouidoui (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCuBzVunAVbcwzMfQaJVacuw "~Le Roi Des Rats (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCyWqModMQlbIo8274Wh_ZsQ "~Cyprien (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCWeg2Pkate69NFdBeuRFTAw "~Squeezie (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCOuIgj0CYCXCvjWywjDbauw "~Chat sceptique (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCEfFUaIkjbI06PhALdcXNVA "~EmacsCast (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCZHPwKyeypWwU8SNJSzQhCw "~Révisons nos Classiques (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCZeyUZmGAyRLDfM2ir3q-OQ "~Captain Popcorn (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCDEtZ7AKmwS0_GNJog01D2g "~Uncle Dave (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCk0fGHsCEzGig-rSzkfCjMw "~The Engineering Mindset (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCOchT7ZJ4TXe3stdLW1Sfxw "~Dans Ton Corps (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCkK9UDm_ZNrq_rIXCz3xCGA "~Bryan Lunduke (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCkRmQ_G_NbdbCQMpALg6UPg "~Emacsrocks (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "~Luke Smith (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCQp2VLAOlvq142YN3JO3y8w "~John Kitchin (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCq0imsn84ShAe9PBOFnoIrg "~Brian Douglas (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC6mzA8J7n0ylf0RnDpj-vrg "~PS Audio (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCm5mt-A4w61lknZ9lCsZtBw "~Steve Brunton (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCyGEYs6CykOtrb8Ok69kL9w "~Alain Olivetti (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCUR03ZSZlEvCO6EWwv4jU2w "~Absol Vidéos (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCP5tjEmvPItGyLhmjdwP7Ww "~RealLifeLore (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCDPK_MTu3uTUFJXRVcTJcEw "~Mcfly &amp; Carlito (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCCMxHHciWRBBouzk-PGzmtQ "~Bazar du Grenier (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCMFcMhePnH4onVHt2-ItPZw "~Hygiène Mentale (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCtI0Hodo5o5dUb67FeUjDeA "~SpaceX (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCdL3UpiseRlvxXuORJjmqZw "~Stardust - La Chaîne Espace (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC6wrGV-8evsewfCpVnYv2sw "~ESRFsynchrotron (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCxqAWLTk1CmBvZFPzeZMd9A "~Domain of Science (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC5X4e8ScZI2AFd_vkjSoyoQ "~AstronoGeek (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCTafEJoRl5myC8A50plIrng "~FabienOlicard (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC5ClFK9Ko4ACRgXjRZc_GfA "~Rhinofeed (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCWty1tzwZW_ZNSp5GVGteaA "~La statistique expliquée à mon chat (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC4PasDd25MXqlXBogBw9CAg "~Mickaël Launay (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC7vVhkEfw4nOGp8TyDk7RcQ "~BostonDynamics (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCXPHFM88IlFn68OmLwtPmZA "~Greg Hurrell (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCqdRx3JV3xRchi4_xwFJUTA "~8FabLab (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCs7Jg5KBsgiova4CrseuwIw "~TheGrandTest (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCUR1pFG_3XoZn3JNKjulqZg "~Thoughtbot (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC9Ntx-EF3LzKY1nQ5rTUP2g "~Cyriak (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCmkP178NasnhR3TWQyyP4Gw "~How To Mechatronics (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCJRljQ8OcyfzHBYpS_bDbow "~La Mezzanine (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC3gZqwD45zGCsduBn-Q2lew "~Gabrielle Grau (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC9BnGZLT4iPaJtDOXYwQuHQ "~Primum Non Nocere (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCsz9DiwPtgDvxJ-njWnieZw "~Passe-Science (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCP46_MXP_WG_auH88FnfS1A "~Nota Bene (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC5eOLQO5VUEFJukNg9cl5jg "~Dave Sheik (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC4Euikzr0bLKsnNuIKW6Sfg "~On n'est pas couché (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC2LZO6swZ9SLUEOks3WnsfA "~2veritasium (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCeR8BYZS7IHYjk_9Mh5JgkA "~Scilabus (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCCsdIja21VT7AKkbVI5y8bQ "~Alain Vaillancourt (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCr-cm90DwFJC0W3f9jBs5jA "~EEVblog2 (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC_ZChHhr5nDrUymz7qsRqRw "~Confér'ENS (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC2UT8pPDlUvRbQXTVOf5Ocw "~Hihacks (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCSULDz1yaHLVQWHpm4g_GHA "~Monsieur bidouille (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCjsHDXUU3BjBCG7OaCbNDyQ "~Le Sense Of Wonder (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCwRXb5dUK4cvsHbx-rGzSgw "~Derek Banas (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCND0gjuG9ltEWDvh82VJITg "~Jeannot Nymouce (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCWMYFDuCcvkmPiOf1RP_IKQ "~Bigorneaux et Coquillages (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCYD22MFqaNqXp-ogTMosW_A "~Le Show Jaune (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC0qKPcBbWJpJbyxPhtye5cg "~Ce soir ou jamais (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCVqx3vXNghSqUcVg2nmegYA "~U꞊RI (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCaNlbnghtwlsGF-KzAFThqA "~ScienceEtonnante (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCNmLe68qKzdjuEpT_YTDFuA "~Etonnarium (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC2qLXSbTeNI3bHkfrHGvn1g "~ProfOkita (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCm3C3OSgcyzaTBXrNRupB3Q "~Le Woop (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCUK0HBIBWgM2c4vsPhkYY4w "~The Slow Mo Guys (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCH6ppHEvV3_WIXEwmhv9HEg "~Deus Ex Silicium (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC5QPFDZ3Y4ylkkGJc6Y1OOA "~Philippe Demerliac (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCtqICqGbPSbTN09K1_7VZ3Q "~DirtyBiology (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC2bkHVIDjXS7sgrgjFtzOXQ "~Engineerguy (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCw3tZ7g_FljNjzGprCuptpA "~Taupe10 (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCwbV8cTR4yBgFdfa_BXV2OA "~Le Fossoyeur de Films (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC7DdEm33SyaTDtWYGO2CwdA "~Physics Girl (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCx8mQU1dOemRUTPmrjs_Jaw "~MrGalagomusic (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCSqyMHDUsc1gs6wz4sUy91w "~Jipihorn (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC8gSNcKgwBK7B4ulB8nh_gw "~Igor Presnyakov (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCiLhOvfEbf_uPvlcWWZKOrw "~Gonzaguetv (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCcziTK2NKeWtWQ6kB5tmQ8Q "~E-penser (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCm5wThREh298TkK8hCT9HuA "~Data Gueule (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC_GlthPB9gzdxfkTTEIVxMA "~Incroyables Expériences (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCHnyfMqiRRG1u-2MsSQLbXA "~Veritasium (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC2_OG1L8DLTzQ7UrZVOk7OA "~Axolot (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCAFQjCZo5okIPkHUQlBZM-g "~Bonjour Tristesse (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCTt2AnK--mnRmICnf-CCcrw "~Le Rire Jaune (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCyi6pFP-lmaDD3Eb4dqsvdg "~Ioduremetallique (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCGgvKW19IWVvUUblrr8EgHA "~Experimentboy 2 (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCvGag7MyHR8H9oRm9iL9Ifw "~Experimentboy (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCj_iGliGCkLcHSZ8eqVNPDQ "~Grafikart.fr (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCt52sko033qGQl9EjtgTWPA "~Juliette Koch (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCeQEKFH31vvD-InkTGSvCrA "~Brusspup (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCxeA1l2E5AYrtpkqUbBEg3A "~Pierre Lecourt (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCUJQSGHlYC9Xyz-uNfSpSsA "~ElectronikHeart (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCtI6_1vGanPlH5lgVIDjJGQ "~MrAntoineDaniel (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCkEa1AfdeB93-he4VziKGFg "~Jigmé (Youtube)" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCfXXAQ-mp1uUcvSpvMcAAtw "~LinksTheSun (Youtube)" youtube
#+END_SRC

807
dotfiles/polybar.org Normal file
View File

@ -0,0 +1,807 @@
#+TITLE: Polybar Configuration
#+PROPERTY: header-args+ :comments both
#+PROPERTY: header-args+ :mkdirp yes
#+PROPERTY: header-args+ :tangle ~/.config/polybar/config
* Colors
#+begin_src conf
[colors]
base00 = ${xrdb:color0:#000000}
base01 = ${xrdb:color10:#000000}
base02 = ${xrdb:color11:#000000}
base03 = ${xrdb:color8:#000000}
base04 = ${xrdb:color12:#000000}
base05 = ${xrdb:color7:#000000}
base06 = ${xrdb:color13:#000000}
base07 = ${xrdb:color15:#000000}
base08 = ${xrdb:color1:#000000}
base09 = ${xrdb:color9:#000000}
base0A = ${xrdb:color3:#000000}
base0B = ${xrdb:color2:#000000}
base0C = ${xrdb:color6:#000000}
base0D = ${xrdb:color4:#000000}
base0E = ${xrdb:color5:#000000}
base0F = ${xrdb:color14:#000000}
; based on http://chriskempson.com/projects/base16/
background = ${colors.base00}
background-light = ${colors.base01}
background-selection = ${colors.base02}
comments = ${colors.base03}
foreground-dark = ${colors.base04}
foreground = ${colors.base05}
foreground-light = ${colors.base06}
foreground-light-bis = ${colors.base07}
red = ${colors.base08}
orange = ${colors.base09}
brown = ${colors.base0A}
green = ${colors.base0B}
turquoise = ${colors.base0C}
blue = ${colors.base0D}
purple = ${colors.base0E}
magenta = ${colors.base0F}
black = ${#000000}
#+end_src
* VM
#+begin_src conf
[global/wm]
margin-top = 5
margin-bottom = 5
#+end_src
* Top Bar
#+BEGIN_SRC conf
[bar/top]
# monitor = ${env:MONITOR:eDP1}
enable-ipc = true
override-redirect = false
bottom = false
fixed-center = true
width = 100%
height = 27
radius = 0.0
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3
border-size = 0
padding-left = 2
padding-right = 2
module-margin-left = 1
module-margin-right = 1
font-0 = SauceCodePro Nerd Font:style=Medium,Regular:pixelsize=10;1
font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
font-2 = Weather Icons:size=10;1
# font-3 = siji:pixelsize=10;1
# modules-left = mpd pulseaudio
# modules-center = i3 xwindow
modules-left = i3
modules-center = xwindow
modules-right = nordvpn unread_mail cpu battery temperature date
tray-position = right
tray-padding = 2
#tray-transparent = true
#tray-background = #0063ff
#cursor-click = pointer
#cursor-scroll = ns-resize
#+END_SRC
* Bottom Bar
#+BEGIN_SRC conf
[bar/bottom]
# monitor = ${env:MONITOR:eDP1}
enable-ipc = true
override-redirect = false
bottom = true
fixed-center = true
width = 100%
height = 27
radius = 0.0
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3
border-size = 0
padding-left = 2
padding-right = 2
module-margin-left = 1
module-margin-right = 1
font-0 = SauceCodePro Nerd Font:style=Medium,Regular:pixelsize=10;1
font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
font-2 = Weather Icons:size=10;1
# font-3 = siji:pixelsize=10;1
modules-left = mpd pulseaudio
# modules-center = xwindow
modules-right = screenshot weather emacs caffeine redshift
# tray-position = right
# tray-padding = 2
#tray-transparent = true
#tray-background = #0063ff
#cursor-click = pointer
#cursor-scroll = ns-resize
#+END_SRC
* Show Windows Title
#+BEGIN_SRC conf
[module/xwindow]
type = internal/xwindow
label = %title:0:30:...%
#+END_SRC
* Current Layour of the Keyboard
#+BEGIN_SRC conf
[module/xkeyboard]
type = internal/xkeyboard
# List of indicators to ignore
blacklist-0 = num lock
format = <label-layout>
format-prefix = " "
format-prefix-foreground = ${colors.foreground}
format-prefix-underline = ${colors.background}
label-layout = %layout%
label-layout-underline = ${colors.background}
#+END_SRC
* Mount filesystem and show available space
#+BEGIN_SRC conf
[module/filesystem]
type = internal/fs
interval = 25
# List of mountpoints to display
mount-0 = /
label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
label-unmounted = %mountpoint%
label-unmounted-foreground = ${colors.comments}
#+END_SRC
* I3 - Information about workspaces and active one
#+BEGIN_SRC conf
[module/i3]
type = internal/i3
enable-scroll = false
wrapping-scroll = false
#+END_SRC
** TODO - Choose some nice icons
#+BEGIN_SRC conf
ws-icon-0 = 1;
ws-icon-1 = 2;
ws-icon-2 = 3;
ws-icon-3 = 4;
ws-icon-4 = 5;
ws-icon-default = 
#+END_SRC
#+BEGIN_SRC conf
format = <label-state> <label-mode>
index-sort = true
#+END_SRC
** Colors
#+BEGIN_SRC conf
label-mode-foreground = ${colors.foreground}
label-mode-background = ${colors.turquoise}
label-mode-padding = 1
# focused = Active workspace on focused monitor
label-focused = %icon% %index%
label-focused-foreground = ${colors.foreground}
label-focused-background = ${colors.background}
label-focused-underline = ${colors.turquoise}
label-focused-padding = 1
# unfocused = Inactive workspace on any monitor
label-unfocused = %icon% %index%
label-unfocused-foreground = ${colors.foreground}
label-unfocused-background = ${colors.background}
label-unfocused-underline = ${colors.background}
label-unfocused-padding = 1
# visible = Active workspace on unfocused monitor
label-visible = %icon% %index%
label-visible-background = ${colors.background}
label-visible-underline = ${colors.turquoise}
label-visible-padding = 1
# urgent = Workspace with urgency hint set
label-urgent = %icon% %index%
label-urgent-background = ${colors.red}
label-urgent-padding = 1
# Separator in between workspaces
#label-separator = |
#+END_SRC
* Music using MPD
#+BEGIN_SRC conf
[module/mpd]
type = internal/mpd
format-online = <icon-prev> <toggle> <icon-next> <icon-repeat> <icon-random> <bar-progress> %{A1:termite -e "ncmpcpp" &:}<label-song>%{A}
format-online-spacing = 0
format-online-padding = 0
label-offline = mpd is offline
format-offline = <label-offline>
format-offline-foreground = #777
label-song = %artist% - %title%
label-song-maxlen = 30
label-song-ellipsis = true
icon-prev = 寧
icon-stop = 栗
icon-play = 契
icon-pause = 
icon-next = 嶺
icon-random = 咽
icon-repeat = 凌
# Used to display the state of random/repeat/repeatone/single
# Only applies if <icon-[random|repeat|repeatone|single]> is used
toggle-on-foreground = ${colors.foreground-light}
toggle-off-foreground = ${colors.comments}
bar-progress-width = 15
bar-progress-indicator = |
bar-progress-fill = ─
bar-progress-empty = ─
#+END_SRC
* Backlight level
#+BEGIN_SRC conf
[module/xbacklight]
type = internal/xbacklight
format = <ramp>
ramp-0 = 
ramp-1 = 
ramp-2 = 
ramp-3 = 
ramp-4 = 
ramp-5 = 
ramp-6 = 
ramp-7 = 
ramp-8 = 
ramp-9 = 
ramp-10 = 
ramp-11 = 
#+END_SRC
* CPU Usage
#+BEGIN_SRC conf
[module/cpu]
type = internal/cpu
interval = 2
format-prefix-foreground = ${colors.foreground}
format-underline = ${colors.background}
label = %{A1:termite -e "htop" &:} ﬙ %percentage:2%% %{A}
#+END_SRC
* Available Memory
#+BEGIN_SRC conf
[module/memory]
type = internal/memory
interval = 2
format-prefix = " "
format-prefix-foreground = ${colors.foreground-dark}
format-underline = #4bffdc
label = %percentage_used%%
#+END_SRC
* Date
#+BEGIN_SRC conf
[module/date]
type = internal/date
interval = 1
# Open google calendar on left right
date = %{A1:qutebrowser https\://calendar.google.com/ &:} %d-%m%{A}
date-alt = "%{A1:qutebrowser https\://calendar.google.com/ &:} %d-%m-%Y%{A}"
time =  %H:%M
time-alt =  %H:%M:%S
label = %date% %time%
#+END_SRC
* Sound Volume
#+BEGIN_SRC conf
[module/pulseaudio]
type = internal/pulseaudio
# Open pavucontrol on left right
format-volume =%{A1:pavucontrol &:}<label-volume> <bar-volume>%{A}
label-volume = %percentage%%
label-volume-foreground = ${root.foreground}
label-muted = ﱝ muted
bar-volume-width = 10
bar-volume-foreground-0 = ${colors.green}
bar-volume-foreground-1 = ${colors.green}
bar-volume-foreground-2 = ${colors.blue}
bar-volume-foreground-3 = ${colors.blue}
bar-volume-foreground-4 = ${colors.red}
bar-volume-foreground-5 = ${colors.red}
bar-volume-foreground-6 = ${colors.red}
bar-volume-gradient = false
bar-volume-indicator = |
bar-volume-indicator-font = 2
bar-volume-fill = ─
bar-volume-fill-font = 2
bar-volume-empty = ─
bar-volume-empty-font = 2
bar-volume-empty-foreground = ${colors.foreground}
#+END_SRC
* Battery
#+BEGIN_SRC conf
# TODO - open battery manager on click
[module/battery]
type = internal/battery
battery = BAT0
adapter = ADP1
full-at = 95
format-charging = <ramp-capacity> <label-charging>
format-charging-underline = ${colors.blue}
format-discharging = <ramp-capacity> <label-discharging>
format-discharging-underline = ${colors.red}
format-full-prefix = " "
format-full-prefix-foreground = ${colors.foreground}
format-full-underline = ${colors.background}
ramp-capacity-0 = 
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 
ramp-capacity-foreground = ${colors.foreground}
animation-charging-0 = 
animation-charging-1 = 
animation-charging-2 = 
animation-charging-3 = 
animation-charging-4 = 
animation-charging-foreground = ${colors.foreground}
animation-charging-framerate = 750
animation-discharging-0 = 
animation-discharging-1 = 
animation-discharging-2 = 
animation-discharging-3 = 
animation-discharging-4 = 
animation-discharging-foreground = ${colors.foreground}
animation-discharging-framerate = 750
#+END_SRC
* TODO Temperature
- [ ] Open temperature manager on click
#+BEGIN_SRC conf
[module/temperature]
type = internal/temperature
interval = 5
thermal-zone = 0
warn-temperature = 70
;; Temperature off one cpu core
hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input
format = <ramp> <label>
format-underline = ${colors.background}
format-warn = <ramp> <label-warn>
format-warn-underline = ${colors.red}
label = %temperature-c%
label-warn = %temperature-c%
label-warn-foreground = ${colors.red}
ramp-0 = 
ramp-1 = 
ramp-2 = 
ramp-3 = 
ramp-4 = 
ramp-foreground = ${colors.foreground}
#+END_SRC
* Power Menu
#+BEGIN_SRC conf
[module/powermenu]
type = custom/menu
expand-right = true
format-spacing = 1
label-open = 
label-open-foreground = ${colors.blue}
label-close = cancel
label-close-foreground = ${colors.blue}
label-separator = |
label-separator-foreground = ${colors.foreground}
menu-0-0 = reboot
menu-0-0-exec = menu-open-1
menu-0-1 = power off
menu-0-1-exec = menu-open-2
menu-1-0 = cancel
menu-1-0-exec = menu-open-0
menu-1-1 = reboot
menu-1-1-exec = sudo reboot
menu-2-0 = power off
menu-2-0-exec = sudo poweroff
menu-2-1 = cancel
menu-2-1-exec = menu-open-0
#+END_SRC
* Settings
#+BEGIN_SRC conf
[settings]
screenchange-reload = true
#compositing-background = xor
#compositing-background = screen
#compositing-foreground = source
#compositing-border = over
#+END_SRC
* TODO Unread Mails
- [ ] Add custom color when having new email
#+BEGIN_SRC conf
[module/unread_mail]
type = custom/script
label-font = 2
format-underline = ${colors.background}
click-left = termite -e "tmuxinator start neomutt" &
format = <label>
exec = ~/.config/polybar/scripts/unread_mails.sh
interval = 1
#+END_SRC
* Redshift
#+BEGIN_SRC conf
[module/redshift]
type = custom/script
label-font = 2
format-underline = ${colors.background}
click-left = ~/.config/polybar/scripts/redshift.sh toggle
format = <label>
exec = ~/.config/polybar/scripts/redshift.sh
interval = 1
#+END_SRC
* TODO Calendar
#+begin_src conf
[module/popup-calendar]
type = custom/script
exec = ~/scripts/popup-calendar.sh
interval = 5
click-left = ~/scripts/popup-calendar.sh --popup
#+end_src
* TODO Emacs Server
#+begin_src conf
[module/emacs]
type = custom/script
label-font = 2
format-underline = ${colors.background}
click-left = ~/scripts/emacsclient.sh &
format = <label>
exec = ~/.config/polybar/scripts/emacs.sh
interval = 1
#+end_src
** Emacs Server Scripts
:PROPERTIES:
:header-args: :tangle ~/.config/polybar/scripts/emacs.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
#+BEGIN_SRC bash
if test -e "/tmp/emacs1000/server" || test -e "~/.emacs.d/server"; then
echo "%{F#859900}%{F-}";
else
echo "";
fi
#+END_SRC
* TODO NordVPN
Make a script that is called with left-click that toggles to status of the VPN.
#+BEGIN_SRC conf
[module/nordvpn]
type = custom/script
format-underline = ${colors.background}
click-left = ~/.config/polybar/scripts/nordvpn-toggle.sh
format = <label>
exec = ~/.config/polybar/scripts/nordvpn.sh
interval = 5
#+END_SRC
** Nordvpn Toggle script
:PROPERTIES:
:header-args: :tangle ~/.config/polybar/scripts/nordvpn-toggle.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
#+BEGIN_SRC bash
vpnstatus=`nordvpn status`;
if [[ ${vpnstatus} == *"Disconnected"* ]]; then
nordvpn connect
else
nordvpn disconnect
fi
#+END_SRC
** Nordvpn Status script
:PROPERTIES:
:header-args: :tangle ~/.config/polybar/scripts/nordvpn.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
#+BEGIN_SRC bash
vpnstatus=`nordvpn status`;
if [[ ${vpnstatus} == *"Disconnected"* ]]; then
echo "";
else
country=`echo -e $vpnstatus | sed 's/^.*Country: \(\w*\) .*$/\1/'`
echo "%{F#859900}%{F-} $country";
fi
#+END_SRC
* TODO Caffeine
#+BEGIN_SRC conf
[module/caffeine]
type = custom/script
label-font = 2
format-underline = ${colors.background}
click-left = xautolock -disable && notify-send "Lock Disabled"
click-right = xautolock -enable && notify-send "Lock Enabled"
format = <label>
exec = echo -e "\uf0f4"
interval = 1
#+END_SRC
* Side panel config
#+BEGIN_SRC conf
# [bar/panel]
# monitor = ${env:MONITOR:eDP1}
# enable-ipc = true
# override-redirect = true
# bottom = false
#
# width = 30%
# height = 600 # 1080p - bar height - 2*border width
# offset-x = 70%
# offset-y = 27
# fixed-center = true
# spacing = 1
# module-margin-left = 2
# module-margin-right = 2
#
# border-size = 2
# border-color = ${colors.turquoise}
#
# background = ${colors.background}
# foreground = ${colors.foreground}
#
# font-0 = SauceCodePro Nerd Font:style=Medium,Regular:pixelsize=10;1
# font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
# font-2 = siji:pixelsize=10;1
#
# modules-center = lock logout hibernate reboot shutdown screenshot
#+END_SRC
* TODO Weather
https://github.com/x70b1/polybar-scripts/tree/master/polybar-scripts/openweathermap-fullfeatured
#+begin_src conf
[module/weather]
type = custom/script
exec = ~/.config/polybar/scripts/weather.sh
interval = 600
label-font = 3
#+end_src
** TODO Add action when cliking on it => open webpage with meteo
* TODO Network
#+begin_src conf
[module/network]
type = internal/network
interface = wlp3s0
; Seconds to sleep between updates
; Default: 1
interval = 3.0
; ; Test connectivity every Nth update
; ; A value of 0 disables the feature
; ; NOTE: Experimental (needs more testing)
; ; Default: 0
; ;ping-interval = 3
; ; @deprecated: Define min width using token specifiers (%downspeed:min% and %upspeed:min%)
; ; Minimum output width of upload/download rate
; ; Default: 3
; udspeed-minwidth = 5
; ; Accumulate values from all interfaces
; ; when querying for up/downspeed rate
; ; Default: false
; accumulate-stats = true
; ; Consider an `UNKNOWN` interface state as up.
; ; Some devices have an unknown state, even when they're running
; ; Default: false
; unknown-as-up = true
; ; Available tags:
; ; <label-connected> (default)
; ; <ramp-signal>
format-connected-prefix = "  "
format-connected = <label-connected>
; ; Available tags:
; ; <label-disconnected> (default)
; format-disconnected = <label-disconnected>
; ; Available tags:
; ; <label-connected> (default)
; ; <label-packetloss>
; ; <animation-packetloss>
; format-packetloss = <animation-packetloss> <label-connected>
; ; Available tokens:
; ; %ifname% [wireless+wired]
; ; %local_ip% [wireless+wired]
; ; %local_ip6% [wireless+wired]
; ; %essid% [wireless]
; ; %signal% [wireless]
; ; %upspeed% [wireless+wired]
; ; %downspeed% [wireless+wired]
; ; %linkspeed% [wired]
; ; Default: %ifname% %local_ip%
label-connected = %essid%
; label-connected-foreground = #eefafafa
; ; Available tokens:
; ; %ifname% [wireless+wired]
; ; Default: (none)
; label-disconnected = not connected
; label-disconnected-foreground = #66ffffff
; ; Available tokens:
; ; %ifname% [wireless+wired]
; ; %local_ip% [wireless+wired]
; ; %local_ip6% [wireless+wired]
; ; %essid% [wireless]
; ; %signal% [wireless]
; ; %linkspeed% [wired]
; ; Default: (none)
; ;label-packetloss = %essid%
; ;label-packetloss-foreground = #eefafafa
; ; Only applies if <ramp-signal> is used
; ramp-signal-0 = 😱
; ramp-signal-1 = 😠
; ramp-signal-2 = 😒
; ramp-signal-3 = 😊
; ramp-signal-4 = 😃
; ramp-signal-5 = 😈
; ; Only applies if <animation-packetloss> is used
; animation-packetloss-0 = ⚠
; animation-packetloss-0-foreground = #ffa64c
; animation-packetloss-1 = 📶
; animation-packetloss-1-foreground = #000000
; ; Framerate in milliseconds
; animation-packetloss-framerate = 500
#+end_src
* Option Menu
#+BEGIN_SRC conf
[module/option_menu]
type = custom/ipc
hook-0 = ~/.i3/scripts/polybar_wrapper.sh options_icon
initial = 1
click-left = ~/.i3/scripts/polybar_wrapper.sh options
#+END_SRC
* Logout
#+BEGIN_SRC conf
[module/logout]
type = custom/text
content = ""
click-left = i3exit switch_user
#+END_SRC
* Hibernate
#+BEGIN_SRC conf
[module/hibernate]
type = custom/text
content = ""
click-left = i3exit hibernate
#+END_SRC
* Shutdown
#+BEGIN_SRC conf
[module/shutdown]
type = custom/text
content = ""
click-left = i3exit shutdown
#+END_SRC
* Reboot
#+BEGIN_SRC conf
[module/reboot]
type = custom/text
content = ""
click-left = i3exit logout
#+END_SRC
* Lock
#+BEGIN_SRC conf
[module/lock]
type = custom/text
content = ""
click-left = blurlock
#+END_SRC
* TODO Screenshot
First it blocking the polybar, then the right click is not working
#+BEGIN_SRC conf
[module/screenshot]
type = custom/text
content = ""
click-left = scrot -e 'feh $f -x' --delay 1
click-right = scrot -s -e 'feh $f -x'
#+END_SRC

897
dotfiles/qutebrowser.org Normal file
View File

@ -0,0 +1,897 @@
#+TITLE: Qutebrowser Configuration
#+PROPERTY: header-args+ :comments none
#+PROPERTY: header-args+ :mkdirp yes
#+PROPERTY: header-args+ :tangle ~/.config/qutebrowser/config.py
* General config
#+BEGIN_SRC conf
# This is here so configs done via the GUI are still loaded.
# Remove it to not load settings done via the GUI.
# config.load_autoconfig()
# Aliases for commands. The keys of the given dictionary are the
c.aliases = {'w': 'session-save', 'q': 'quit', 'wq': 'quit --save'}
# Time interval (in milliseconds) between auto-saves of config/cookies/etc.
c.auto_save.interval = 15000
# Always restore open sites when qutebrowser is reopened.
c.auto_save.session = False
# Backend to use to display websites
c.backend = 'webengine'
# Require a confirmation before quitting the application.
# Valid values:
# - always: Always show a confirmation.
# - multiple-tabs: Show a confirmation if multiple tabs are opened.
# - downloads: Show a confirmation if downloads are running
# - never: Never show a confirmation.
c.confirm_quit = ['downloads']
#+END_SRC
* Content
#+BEGIN_SRC conf
# Automatically start playing `<video>` elements
c.content.autoplay = False
# Allow websites to request geolocations.
c.content.geolocation = 'ask'
# Show javascript alerts.
c.content.javascript.alert = True
# Allow JavaScript to read from or write to the clipboard
c.content.javascript.can_access_clipboard = True
# Allow websites to record audio/video.
c.content.media_capture = 'ask'
# Allow pdf.js to view PDF files in the browser
c.content.pdfjs = False
# Proxy to use. In addition to the listed values, you can use a
# `socks://...` or `http://...` URL.
# Valid values:
# - system: Use the system wide proxy.
# - none: Don't use any proxy
c.content.proxy = 'system'
#+END_SRC
* Downloads
#+BEGIN_SRC conf
# Directory to save downloads to
c.downloads.location.directory = '$HOME/Downloads/'
# Prompt the user for the download location
c.downloads.location.prompt = True
# Remember the last used download directory.
c.downloads.location.remember = True
# What to display in the download filename input.
# Valid values:
# - path: Show only the download path.
# - filename: Show only download filename.
# - both: Show download path and filename.
c.downloads.location.suggestion = 'path'
# Where to show the downloaded files.
c.downloads.position = 'bottom'
# Duration (in milliseconds) to wait before removing finished downloads
c.downloads.remove_finished = 10000
#+END_SRC
* Fonts
#+BEGIN_SRC conf
# Default monospace fonts
c.fonts.monospace = '"SauceCodePro Nerd Font Mono" "xos4 Terminus", Terminus, Monospace, "DejaVu Sans Mono", Monaco, "Bitstream Vera Sans Mono", "Andale Mono", "Courier New", Courier, "Liberation Mono", monospace, Fixed, Consolas, Terminal'
# Font used for prompts.
c.fonts.prompts = '10pt monospace'
# Font used in the statusbar.
c.fonts.statusbar = '10pt monospace'
# Font used in the tab bar.
c.fonts.tabs = '10pt monospace'
#+END_SRC
* Hints
#+BEGIN_SRC conf
# When a hint can be automatically followed without pressing Enter.
# Valid values:
# - always: Auto-follow whenever there is only a single hint on a page.
# - unique-match: Auto-follow whenever there is a unique non-empty match in either the hint string (word mode) or filter (number mode).
# - full-match: Follow the hint when the user typed the whole hint (letter, word or number mode) or the element's text (only in number mode).
# - never: The user will always need to press Enter to follow a hint.
# c.hints.auto_follow = 'unique-match'
# Duration (in milliseconds) to ignore normal-mode key bindings after a
# successful auto-follow.
# c.hints.auto_follow_timeout = 0
# CSS border value for hints.
# c.hints.border = '1px solid #E3BE23'
# Characters used for hint strings.
# c.hints.chars = 'asdfghjkl'
# Dictionary file to be used by the word hints.
# c.hints.dictionary = '/usr/share/dict/words'
# Which implementation to use to find elements to hint.
# Valid values:
# - javascript: Better but slower
# - python: Slightly worse but faster
# c.hints.find_implementation = 'python'
# Hide unmatched hints in rapid mode.
# c.hints.hide_unmatched_rapid_hints = True
# Minimum number of characters used for hint strings.
# c.hints.min_chars = 1
# Mode to use for hints.
# Valid values:
# - number: Use numeric hints. (In this mode you can also type letters from the hinted element to filter and reduce the number of elements that are hinted.)
# - letter: Use the characters in the `hints.chars` setting.
# - word: Use hints words based on the html elements and the extra words.
# c.hints.mode = 'letter'
# Comma-separated list of regular expressions to use for 'next' links.
# c.hints.next_regexes = ['\\bnext\\b', '\\bmore\\b', '\\bnewer\\b', '\\b[>→≫]\\b', '\\b(>>|»)\\b', '\\bcontinue\\b']
# Comma-separated list of regular expressions to use for 'prev' links.
# c.hints.prev_regexes = ['\\bprev(ious)?\\b', '\\bback\\b', '\\bolder\\b', '\\b[<←≪]\\b', '\\b(<<|«)\\b']
# Scatter hint key chains (like Vimium) or not (like dwb). Ignored for
# number hints.
# c.hints.scatter = True
# Make characters in hint strings uppercase.
# c.hints.uppercase = False
#+END_SRC
* Input
#+BEGIN_SRC conf
# Enter insert mode if an editable element is clicked.
c.input.insert_mode.auto_enter = True
# Leave insert mode if a non-editable element is clicked.
c.input.insert_mode.auto_leave = True
# Automatically enter insert mode if an editable element is focused
# after loading the page.
c.input.insert_mode.auto_load = False
# Switch to insert mode when clicking flash and other plugins.
# c.input.insert_mode.plugins = False
# Include hyperlinks in the keyboard focus chain when tabbing.
# c.input.links_included_in_focus_chain = True
# Timeout (in milliseconds) for partially typed key bindings. If the
# current input forms only partial matches, the keystring will be
# cleared after this time.
# c.input.partial_timeout = 5000
# Enable Opera-like mouse rocker gestures. This disables the context
# menu.
# c.input.rocker_gestures = False
# Enable spatial navigation. Spatial navigation consists in the ability
# to navigate between focusable elements in a Web page, such as
# hyperlinks and form controls, by using Left, Right, Up and Down arrow
# keys. For example, if the user presses the Right key, heuristics
# determine whether there is an element he might be trying to reach
# towards the right and which element he probably wants.
# c.input.spatial_navigation = False
#+END_SRC
* Keyhint
#+BEGIN_SRC conf
# Keychains that shouldn't be shown in the keyhint dialog. Globs are
# supported, so `;*` will blacklist all keychains starting with `;`. Use
# `*` to disable keyhints.
# c.keyhint.blacklist = []
# Time (in milliseconds) from pressing a key to seeing the keyhint
# dialog.
# c.keyhint.delay = 500
# Rounding radius (in pixels) for the edges of the keyhint dialog.
# c.keyhint.radius = 6
#+END_SRC
* Messages
#+BEGIN_SRC conf
# Duration (in milliseconds) to show messages in the statusbar for. Set
# to 0 to never clear messages.
# c.messages.timeout = 2000
#+END_SRC
* New Instance Options
#+BEGIN_SRC conf
# How to open links in an existing instance if a new one is launched.
# This happens when e.g. opening a link from a terminal. See
# `new_instance_open_target_window` to customize in which window the
# link is opened in.
# Valid values:
# - tab: Open a new tab in the existing window and activate the window.
# - tab-bg: Open a new background tab in the existing window and activate the window.
# - tab-silent: Open a new tab in the existing window without activating the window.
# - tab-bg-silent: Open a new background tab in the existing window without activating the window.
# - window: Open in a new window.
# c.new_instance_open_target = 'tab'
# Which window to choose when opening links as new tabs. When
# `new_instance_open_target` is not set to `window`, this is ignored.
# Valid values:
# - first-opened: Open new tabs in the first (oldest) opened window.
# - last-opened: Open new tabs in the last (newest) opened window.
# - last-focused: Open new tabs in the most recently focused window.
# - last-visible: Open new tabs in the most recently visible window.
# c.new_instance_open_target_window = 'last-focused'
#+END_SRC
* Prompt
#+BEGIN_SRC conf
# Show a filebrowser in upload/download prompts.
# c.prompt.filebrowser = True
# Rounding radius (in pixels) for the edges of prompts.
# c.prompt.radius = 8
#+END_SRC
* Qt
#+BEGIN_SRC conf
# Additional arguments to pass to Qt, without leading `--`. With
# QtWebEngine, some Chromium arguments (see
# https://peter.sh/experiments/chromium-command-line-switches/ for a
# list) will work.
# c.qt.args = []
# Force a Qt platform to use. This sets the `QT_QPA_PLATFORM`
# environment variable and is useful to force using the XCB plugin when
# running QtWebEngine on Wayland.
# c.qt.force_platform = None
# Force software rendering for QtWebEngine. This is needed for
# QtWebEngine to work with Nouveau drivers and can be useful in other
# scenarios related to graphic issues.
# Valid values:
# - software-opengl: Tell LibGL to use a software implementation of GL (`LIBGL_ALWAYS_SOFTWARE` / `QT_XCB_FORCE_SOFTWARE_OPENGL`)
# - qt-quick: Tell Qt Quick to use a software renderer instead of OpenGL. (`QT_QUICK_BACKEND=software`)
# - chromium: Tell Chromium to disable GPU support and use Skia software rendering instead. (`--disable-gpu`)
# - none: Don't force software rendering.
# c.qt.force_software_rendering = 'none'
# Turn on Qt HighDPI scaling. This is equivalent to setting
# QT_AUTO_SCREEN_SCALE_FACTOR=1 in the environment. It's off by default
# as it can cause issues with some bitmap fonts. As an alternative to
# this, it's possible to set font sizes and the `zoom.default` setting.
# c.qt.highdpi = False
# When to use Chromium's low-end device mode. This improves the RAM
# usage of renderer processes, at the expense of performance.
# Valid values:
# - always: Always use low-end device mode.
# - auto: Decide automatically (uses low-end mode with < 1 GB available RAM).
# - never: Never use low-end device mode.
# c.qt.low_end_device_mode = 'auto'
# Which Chromium process model to use. Alternative process models use
# less resources, but decrease security and robustness. See the
# following pages for more details: -
# https://www.chromium.org/developers/design-documents/process-models
# - https://doc.qt.io/qt-5/qtwebengine-features.html#process-models
# Valid values:
# - process-per-site-instance: Pages from separate sites are put into separate processes and separate visits to the same site are also isolated.
# - process-per-site: Pages from separate sites are put into separate processes. Unlike Process per Site Instance, all visits to the same site will share an OS process. The benefit of this model is reduced memory consumption, because more web pages will share processes. The drawbacks include reduced security, robustness, and responsiveness.
# - single-process: Run all tabs in a single process. This should be used for debugging purposes only, and it disables `:open --private`.
# c.qt.process_model = 'process-per-site-instance'
#+END_SRC
* Scrolling
#+BEGIN_SRC conf
# When to show the scrollbar.
# Valid values:
# - always: Always show the scrollbar.
# - never: Never show the scrollbar.
# - when-searching: Show the scrollbar when searching for text in the webpage. With the QtWebKit backend, this is equal to `never`.
# c.scrolling.bar = 'when-searching'
# Enable smooth scrolling for web pages. Note smooth scrolling does not
# work with the `:scroll-px` command.
# c.scrolling.smooth = False
#+END_SRC
* Search
#+BEGIN_SRC conf
# When to find text on a page case-insensitively.
# Valid values:
# - always: Search case-insensitively.
# - never: Search case-sensitively.
# - smart: Search case-sensitively if there are capital characters.
# c.search.ignore_case = 'smart'
# Find text on a page incrementally, renewing the search for each typed
# character.
# c.search.incremental = True
#+END_SRC
* Session
#+BEGIN_SRC conf
# Name of the session to save by default. If this is set to null, the
# session which was last loaded is saved.
# c.session.default_name = None
# Load a restored tab as soon as it takes focus.
# c.session.lazy_restore = False
#+END_SRC
* Spell Check
Languages to use for spell checking. You can check for available
languages and install dictionaries using scripts/dictcli.py. Run the
script with -h/--help for instructions.
Valid values:
- af-ZA: Afrikaans (South Africa)
- bg-BG: Bulgarian (Bulgaria)
- ca-ES: Catalan (Spain)
- cs-CZ: Czech (Czech Republic)
- da-DK: Danish (Denmark)
- de-DE: German (Germany)
- el-GR: Greek (Greece)
- en-AU: English (Australia)
- en-CA: English (Canada)
- en-GB: English (United Kingdom)
- en-US: English (United States)
- es-ES: Spanish (Spain)
- et-EE: Estonian (Estonia)
- fa-IR: Farsi (Iran)
- fo-FO: Faroese (Faroe Islands)
- fr-FR: French (France)
- he-IL: Hebrew (Israel)
- hi-IN: Hindi (India)
- hr-HR: Croatian (Croatia)
- hu-HU: Hungarian (Hungary)
- id-ID: Indonesian (Indonesia)
- it-IT: Italian (Italy)
- ko: Korean
- lt-LT: Lithuanian (Lithuania)
- lv-LV: Latvian (Latvia)
- nb-NO: Norwegian (Norway)
- nl-NL: Dutch (Netherlands)
- pl-PL: Polish (Poland)
- pt-BR: Portuguese (Brazil)
- pt-PT: Portuguese (Portugal)
- ro-RO: Romanian (Romania)
- ru-RU: Russian (Russia)
- sh: Serbo-Croatian
- sk-SK: Slovak (Slovakia)
- sl-SI: Slovenian (Slovenia)
- sq: Albanian
- sr: Serbian
- sv-SE: Swedish (Sweden)
- ta-IN: Tamil (India)
- tg-TG: Tajik (Tajikistan)
- tr-TR: Turkish (Turkey)
- uk-UA: Ukrainian (Ukraine)
- vi-VN: Vietnamese (Viet Nam)
#+BEGIN_SRC conf
c.spellcheck.languages = ['en-US', 'fr-FR']
#+END_SRC
* Status Bar
#+BEGIN_SRC conf
# Hide the statusbar unless a message is shown.
# c.statusbar.hide = False
# Padding (in pixels) for the statusbar.
# c.statusbar.padding = {'top': 1, 'bottom': 1, 'left': 0, 'right': 0}
# Position of the status bar.
# Valid values:
# - top
# - bottom
# c.statusbar.position = 'bottom'
# List of widgets displayed in the statusbar.
# Valid values:
# - url: Current page URL.
# - scroll: Percentage of the current page position like `10%`.
# - scroll_raw: Raw percentage of the current page position like `10`.
# - history: Display an arrow when possible to go back/forward in history.
# - tabs: Current active tab, e.g. `2`.
# - keypress: Display pressed keys when composing a vi command.
# - progress: Progress bar for the current page loading.
# c.statusbar.widgets = ['keypress', 'url', 'scroll', 'history', 'tabs', 'progress']
#+END_SRC
* Tabs
#+BEGIN_SRC conf
# Open new tabs (middleclick/ctrl+click) in the background.
c.tabs.background = True
# Mouse button with which to close tabs.
c.tabs.close_mouse_button = 'right'
# How to behave when the close mouse button is pressed on the tab bar.
# Valid values:
# - new-tab: Open a new tab.
# - close-current: Close the current tab.
# - close-last: Close the last tab.
# - ignore: Don't do anything.
# c.tabs.close_mouse_button_on_bar = 'new-tab'
# Width (in pixels) of the progress indicator (0 to disable).
# c.tabs.indicator.width = 3
# How to behave when the last tab is closed.
# Valid values:
# - ignore: Don't do anything.
# - blank: Load a blank page.
# - startpage: Load the start page.
# - default-page: Load the default page.
# - close: Close the window.
c.tabs.last_close = 'close'
# When switching tabs, what input mode is applied.
# Valid values:
# - persist: Retain the current mode.
# - restore: Restore previously saved mode.
# - normal: Always revert to normal mode.
# c.tabs.mode_on_change = 'normal'
# Switch between tabs using the mouse wheel.
c.tabs.mousewheel_switching = False
# Position of new tabs opened from another tab.
# Valid values:
# - prev: Before the current tab.
# - next: After the current tab.
# - first: At the beginning.
# - last: At the end.
# c.tabs.new_position.related = 'next'
# Position of new tabs which aren't opened from another tab.
# Valid values:
# - prev: Before the current tab.
# - next: After the current tab.
# - first: At the beginning.
# - last: At the end.
# c.tabs.new_position.unrelated = 'last'
# Padding (in pixels) around text for tabs.
# c.tabs.padding = {'top': 0, 'bottom': 0, 'left': 5, 'right': 5}
# Shrink pinned tabs down to their contents.
# c.tabs.pinned.shrink = True
# Position of the tab bar.
c.tabs.position = 'left'
# Which tab to select when the focused tab is removed.
c.tabs.select_on_remove = 'next'
# Format to use for the tab title. The following placeholders are
# defined: * `{perc}`: Percentage as a string like `[10%]`. *
# `{perc_raw}`: Raw percentage, e.g. `10`. * `{title}`: Title of the
# current web page. * `{title_sep}`: The string ` - ` if a title is set,
# empty otherwise. * `{index}`: Index of this tab. * `{id}`: Internal
# tab ID of this tab. * `{scroll_pos}`: Page scroll position. *
# `{host}`: Host of the current web page. * `{backend}`: Either
# ''webkit'' or ''webengine'' * `{private}`: Indicates when private mode
# is enabled. * `{current_url}`: URL of the current web page. *
# `{protocol}`: Protocol (http/https/...) of the current web page. *
# `{audio}`: Indicator for audio/mute status.
# c.tabs.title.format = '{audio}{index}: {title}'
# Width (in pixels or as percentage of the window) of the tab bar if it's vertical.
c.tabs.width = 30
# Wrap when changing tabs.
c.tabs.wrap = False
#+END_SRC
* Urls
#+BEGIN_SRC conf
# What search to start when something else than a URL is entered.
# Valid values:
# - naive: Use simple/naive check.
# - dns: Use DNS requests (might be slow!).
# - never: Never search automatically.
# c.url.auto_search = 'naive'
# URL segments where `:navigate increment/decrement` will search for a
# number.
# Valid values:
# - host
# - port
# - path
# - query
# - anchor
# c.url.incdec_segments = ['path', 'query']
# Search engines which can be used via the address bar. Maps a search
# engine name (such as `DEFAULT`, or `ddg`) to a URL with a `{}`
# placeholder. The placeholder will be replaced by the search term, use
# `{{` and `}}` for literal `{`/`}` signs. The search engine named
# `DEFAULT` is used when `url.auto_search` is turned on and something
# else than a URL was entered to be opened. Other search engines can be
# used by prepending the search engine name to the search term, e.g.
# `:open google qutebrowser`.
c.url.searchengines = {
'DEFAULT': 'https://www.duckduckgo.org/?q={}',
'aw': 'https://wiki.archlinux.org/?search={}',
'w': 'https://en.wikipedia.org/wiki/Special:Search?search={}',
'g': 'https://www.google.com/search?q={}',
'yt': 'https://www.youtube.com/results?search_query={}',
'gh': 'https://github.com/search?utf8={}&q=test&type=',
'r': 'https://www.reddit.com/search?q={}',
'lb': 'http://gen.lib.rus.ec/search.php?req={}',
'la': 'http://gen.lib.rus.ec/scimag/index.php?s={}',
'sm': 'https://www.openstreetmap.org/search?query={}',
}
# Page(s) to open at the start.
c.url.start_pages = ['https://start.duckduckgo.com']
#+END_SRC
* Window
#+BEGIN_SRC conf
# Hide the window decoration. This setting requires a restart on
# Wayland.
# c.window.hide_decoration = False
# Format to use for the window title. The same placeholders like for
# `tabs.title.format` are defined.
# c.window.title_format = '{perc}{title}{title_sep}qutebrowser'
#+END_SRC
* Bindings
** Normal Mode
#+BEGIN_SRC conf
# config.bind("'", 'enter-mode jump_mark')
# config.bind('+', 'zoom-in')
# config.bind('-', 'zoom-out')
# config.bind('.', 'repeat-command')
# config.bind('/', 'set-cmd-text /')
# config.bind(':', 'set-cmd-text :')
# config.bind(';I', 'hint images tab')
# config.bind(';O', 'hint links fill :open -t -r {hint-url}')
# config.bind(';R', 'hint --rapid links window')
# config.bind(';Y', 'hint links yank-primary')
# config.bind(';b', 'hint all tab-bg')
# config.bind(';d', 'hint links download')
# config.bind(';f', 'hint all tab-fg')
# config.bind(';h', 'hint all hover')
# config.bind(';i', 'hint images')
# config.bind(';o', 'hint links fill :open {hint-url}')
# config.bind(';r', 'hint --rapid links tab-bg')
# config.bind(';t', 'hint inputs')
# config.bind(';y', 'hint links yank')
# config.bind('<Alt-1>', 'tab-focus 1')
# config.bind('<Alt-2>', 'tab-focus 2')
# config.bind('<Alt-3>', 'tab-focus 3')
# config.bind('<Alt-4>', 'tab-focus 4')
# config.bind('<Alt-5>', 'tab-focus 5')
# config.bind('<Alt-6>', 'tab-focus 6')
# config.bind('<Alt-7>', 'tab-focus 7')
# config.bind('<Alt-8>', 'tab-focus 8')
# config.bind('<Alt-9>', 'tab-focus -1')
# config.bind('<Alt-m>', 'tab-mute')
# config.bind('<Ctrl-A>', 'navigate increment')
# config.bind('<Ctrl-Alt-p>', 'print')
# config.bind('<Ctrl-B>', 'scroll-page 0 -1')
# config.bind('<Ctrl-D>', 'scroll-page 0 0.5')
# config.bind('<Ctrl-F5>', 'reload -f')
# config.bind('<Ctrl-F>', 'scroll-page 0 1')
# config.bind('<Ctrl-N>', 'open -w')
# config.bind('<Ctrl-PgDown>', 'tab-next')
# config.bind('<Ctrl-PgUp>', 'tab-prev')
# config.bind('<Ctrl-Q>', 'quit')
# config.bind('<Ctrl-Return>', 'follow-selected -t')
# config.bind('<Ctrl-Shift-N>', 'open -p')
# config.bind('<Ctrl-Shift-T>', 'undo')
# config.bind('<Ctrl-Shift-Tab>', 'nop')
# config.bind('<Ctrl-Shift-W>', 'close')
# config.bind('<Ctrl-T>', 'open -t')
# config.bind('<Ctrl-Tab>', 'tab-focus last')
# config.bind('<Ctrl-U>', 'scroll-page 0 -0.5')
# config.bind('<Ctrl-V>', 'enter-mode passthrough')
# config.bind('<Ctrl-W>', 'tab-close')
# config.bind('<Ctrl-X>', 'navigate decrement')
# config.bind('<Ctrl-^>', 'tab-focus last')
# config.bind('<Ctrl-h>', 'home')
# config.bind('<Ctrl-p>', 'tab-pin')
# config.bind('<Ctrl-s>', 'stop')
# config.bind('<Escape>', 'clear-keychain ;; search ;; fullscreen --leave')
# config.bind('<F11>', 'fullscreen')
# config.bind('<F5>', 'reload')
# config.bind('<Return>', 'follow-selected')
# config.bind('<back>', 'back')
# config.bind('<forward>', 'forward')
# config.bind('=', 'zoom')
# config.bind('?', 'set-cmd-text ?')
# config.bind('@', 'run-macro')
# config.bind('B', 'set-cmd-text -s :quickmark-load -t')
# config.bind('D', 'tab-close -o')
# config.bind('F', 'hint all tab')
# config.bind('G', 'scroll-to-perc')
# config.bind('H', 'back')
# config.bind('J', 'tab-next')
# config.bind('K', 'tab-prev')
# config.bind('L', 'forward')
# config.bind('M', 'bookmark-add')
# config.bind('N', 'search-prev')
# config.bind('O', 'set-cmd-text -s :open -t')
# config.bind('PP', 'open -t -- {primary}')
# config.bind('Pp', 'open -t -- {clipboard}')
# config.bind('R', 'reload -f')
# config.bind('Sb', 'open qute://bookmarks#bookmarks')
# config.bind('Sh', 'open qute://history')
# config.bind('Sq', 'open qute://bookmarks')
# config.bind('Ss', 'open qute://settings')
# config.bind('T', 'tab-focus')
# config.bind('ZQ', 'quit')
# config.bind('ZZ', 'quit --save')
# config.bind('[[', 'navigate prev')
# config.bind(']]', 'navigate next')
# config.bind('`', 'enter-mode set_mark')
# config.bind('ad', 'download-cancel')
# config.bind('b', 'set-cmd-text -s :quickmark-load')
# config.bind('cd', 'download-clear')
# config.bind('co', 'tab-only')
# config.bind('d', 'tab-close')
# config.bind('f', 'hint')
# config.bind('g$', 'tab-focus -1')
# config.bind('g0', 'tab-focus 1')
# config.bind('gB', 'set-cmd-text -s :bookmark-load -t')
# config.bind('gC', 'tab-clone')
# config.bind('gD', 'tab-give')
# config.bind('gO', 'set-cmd-text :open -t -r {url:pretty}')
# config.bind('gU', 'navigate up -t')
# config.bind('g^', 'tab-focus 1')
# config.bind('ga', 'open -t')
# config.bind('gb', 'set-cmd-text -s :bookmark-load')
# config.bind('gd', 'download')
# config.bind('gf', 'view-source')
# config.bind('gg', 'scroll-to-perc 0')
# config.bind('gi', 'hint inputs --first')
# config.bind('gl', 'tab-move -')
# config.bind('gm', 'tab-move')
# config.bind('go', 'set-cmd-text :open {url:pretty}')
# config.bind('gr', 'tab-move +')
# config.bind('gt', 'set-cmd-text -s :buffer')
# config.bind('gu', 'navigate up')
# Move tabs around
config.bind('gK', 'tab-move -')
config.bind('gJ', 'tab-move +')
# Go to specific websites
config.bind('gy', 'open -o https://youtube.com/')
# Add current page to Buku (Bookmark Manager)
# TODO - Add it interactively
# Add a way to specify tags
# Maybe use Rofi for that
config.bind('B', 'spawn buku -a {url}')
# config.bind('h', 'scroll left')
# config.bind('i', 'enter-mode insert')
# config.bind('j', 'scroll down')
# config.bind('k', 'scroll up')
# config.bind('l', 'scroll right')
# config.bind('m', 'quickmark-save')
# config.bind('n', 'search-next')
# config.bind('o', 'set-cmd-text -s :open')
# config.bind('pP', 'open -- {primary}')
# config.bind('pp', 'open -- {clipboard}')
# config.bind('q', 'record-macro')
# config.bind('r', 'reload')
# config.bind('sf', 'save')
# config.bind('sk', 'set-cmd-text -s :bind')
# config.bind('sl', 'set-cmd-text -s :set -t')
# config.bind('ss', 'set-cmd-text -s :set')
# config.bind('tIH', 'config-cycle -p -u *://*.{url:host}/* content.images ;; reload')
# config.bind('tIh', 'config-cycle -p -u *://{url:host}/* content.images ;; reload')
# config.bind('tIu', 'config-cycle -p -u {url} content.images ;; reload')
# config.bind('tPH', 'config-cycle -p -u *://*.{url:host}/* content.plugins ;; reload')
# config.bind('tPh', 'config-cycle -p -u *://{url:host}/* content.plugins ;; reload')
# config.bind('tPu', 'config-cycle -p -u {url} content.plugins ;; reload')
# config.bind('tSH', 'config-cycle -p -u *://*.{url:host}/* content.javascript.enabled ;; reload')
# config.bind('tSh', 'config-cycle -p -u *://{url:host}/* content.javascript.enabled ;; reload')
# config.bind('tSu', 'config-cycle -p -u {url} content.javascript.enabled ;; reload')
# config.bind('th', 'back -t')
# config.bind('tiH', 'config-cycle -p -t -u *://*.{url:host}/* content.images ;; reload')
# config.bind('tih', 'config-cycle -p -t -u *://{url:host}/* content.images ;; reload')
# config.bind('tiu', 'config-cycle -p -t -u {url} content.images ;; reload')
# config.bind('tl', 'forward -t')
# config.bind('tpH', 'config-cycle -p -t -u *://*.{url:host}/* content.plugins ;; reload')
# config.bind('tph', 'config-cycle -p -t -u *://{url:host}/* content.plugins ;; reload')
# config.bind('tpu', 'config-cycle -p -t -u {url} content.plugins ;; reload')
# config.bind('tsH', 'config-cycle -p -t -u *://*.{url:host}/* content.javascript.enabled ;; reload')
# config.bind('tsh', 'config-cycle -p -t -u *://{url:host}/* content.javascript.enabled ;; reload')
# config.bind('tsu', 'config-cycle -p -t -u {url} content.javascript.enabled ;; reload')
# config.bind('u', 'undo')
# config.bind('v', 'enter-mode caret')
# config.bind('wB', 'set-cmd-text -s :bookmark-load -w')
# config.bind('wO', 'set-cmd-text :open -w {url:pretty}')
# config.bind('wP', 'open -w -- {primary}')
# config.bind('wb', 'set-cmd-text -s :quickmark-load -w')
# config.bind('wf', 'hint all window')
# config.bind('wh', 'back -w')
# config.bind('wi', 'inspector')
# config.bind('wl', 'forward -w')
# config.bind('wo', 'set-cmd-text -s :open -w')
# config.bind('wp', 'open -w -- {clipboard}')
# config.bind('xO', 'set-cmd-text :open -b -r {url:pretty}')
# config.bind('xo', 'set-cmd-text -s :open -b')
# config.bind('yD', 'yank domain -s')
# config.bind('yP', 'yank pretty-url -s')
# config.bind('yT', 'yank title -s')
# config.bind('yY', 'yank -s')
# config.bind('yd', 'yank domain')
# config.bind('yp', 'yank pretty-url')
# config.bind('yt', 'yank title')
# config.bind('yy', 'yank')
# config.bind('{{', 'navigate prev -t')
# config.bind('}}', 'navigate next -t')
#+END_SRC
** Caret mode
#+BEGIN_SRC conf
# config.bind('$', 'move-to-end-of-line', mode='caret')
# config.bind('0', 'move-to-start-of-line', mode='caret')
# config.bind('<Ctrl-Space>', 'drop-selection', mode='caret')
# config.bind('<Escape>', 'leave-mode', mode='caret')
# config.bind('<Return>', 'yank selection', mode='caret')
# config.bind('<Space>', 'toggle-selection', mode='caret')
# config.bind('G', 'move-to-end-of-document', mode='caret')
# config.bind('H', 'scroll left', mode='caret')
# config.bind('J', 'scroll down', mode='caret')
# config.bind('K', 'scroll up', mode='caret')
# config.bind('L', 'scroll right', mode='caret')
# config.bind('Y', 'yank selection -s', mode='caret')
# config.bind('[', 'move-to-start-of-prev-block', mode='caret')
# config.bind(']', 'move-to-start-of-next-block', mode='caret')
# config.bind('b', 'move-to-prev-word', mode='caret')
# config.bind('c', 'enter-mode normal', mode='caret')
# config.bind('e', 'move-to-end-of-word', mode='caret')
# config.bind('gg', 'move-to-start-of-document', mode='caret')
# config.bind('h', 'move-to-prev-char', mode='caret')
# config.bind('j', 'move-to-next-line', mode='caret')
# config.bind('k', 'move-to-prev-line', mode='caret')
# config.bind('l', 'move-to-next-char', mode='caret')
# config.bind('v', 'toggle-selection', mode='caret')
# config.bind('w', 'move-to-next-word', mode='caret')
# config.bind('y', 'yank selection', mode='caret')
# config.bind('{', 'move-to-end-of-prev-block', mode='caret')
# config.bind('}', 'move-to-end-of-next-block', mode='caret')
#+END_SRC
** Bindings for command mode
#+BEGIN_SRC conf
# config.bind('<Alt-B>', 'rl-backward-word', mode='command')
# config.bind('<Alt-Backspace>', 'rl-backward-kill-word', mode='command')
# config.bind('<Alt-D>', 'rl-kill-word', mode='command')
# config.bind('<Alt-F>', 'rl-forward-word', mode='command')
# config.bind('<Ctrl-?>', 'rl-delete-char', mode='command')
# config.bind('<Ctrl-A>', 'rl-beginning-of-line', mode='command')
# config.bind('<Ctrl-B>', 'rl-backward-char', mode='command')
# config.bind('<Ctrl-C>', 'completion-item-yank', mode='command')
# config.bind('<Ctrl-D>', 'completion-item-del', mode='command')
# config.bind('<Ctrl-E>', 'rl-end-of-line', mode='command')
# config.bind('<Ctrl-F>', 'rl-forward-char', mode='command')
# config.bind('<Ctrl-H>', 'rl-backward-delete-char', mode='command')
# config.bind('<Ctrl-K>', 'rl-kill-line', mode='command')
# config.bind('<Ctrl-N>', 'command-history-next', mode='command')
# config.bind('<Ctrl-P>', 'command-history-prev', mode='command')
# config.bind('<Ctrl-Return>', 'command-accept --rapid', mode='command')
# config.bind('<Ctrl-Shift-C>', 'completion-item-yank --sel', mode='command')
# config.bind('<Ctrl-Shift-Tab>', 'completion-item-focus prev-category', mode='command')
# config.bind('<Ctrl-Tab>', 'completion-item-focus next-category', mode='command')
# config.bind('<Ctrl-U>', 'rl-unix-line-discard', mode='command')
# config.bind('<Ctrl-W>', 'rl-unix-word-rubout', mode='command')
# config.bind('<Ctrl-Y>', 'rl-yank', mode='command')
# config.bind('<Down>', 'completion-item-focus --history next', mode='command')
# config.bind('<Escape>', 'leave-mode', mode='command')
# config.bind('<Return>', 'command-accept', mode='command')
# config.bind('<Shift-Delete>', 'completion-item-del', mode='command')
# config.bind('<Shift-Tab>', 'completion-item-focus prev', mode='command')
# config.bind('<Tab>', 'completion-item-focus next', mode='command')
# config.bind('<Up>', 'completion-item-focus --history prev', mode='command')
#+END_SRC
** Bindings for hint mode
#+BEGIN_SRC conf
# config.bind('<Ctrl-B>', 'hint all tab-bg', mode='hint')
# config.bind('<Ctrl-F>', 'hint links', mode='hint')
# config.bind('<Ctrl-R>', 'hint --rapid links tab-bg', mode='hint')
# config.bind('<Escape>', 'leave-mode', mode='hint')
# config.bind('<Return>', 'follow-hint', mode='hint')
#+END_SRC
** Bindings for insert mode
#+BEGIN_SRC conf
# config.bind('<Ctrl-E>', 'open-editor', mode='insert')
# config.bind('<Escape>', 'leave-mode', mode='insert')
# config.bind('<Shift-Ins>', 'insert-text {primary}', mode='insert')
#+END_SRC
** Bindings for passthrough mode
#+BEGIN_SRC conf
# config.bind('<Shift-Escape>', 'leave-mode', mode='passthrough')
#+END_SRC
** Bindings for prompt mode
#+BEGIN_SRC conf
# config.bind('<Alt-B>', 'rl-backward-word', mode='prompt')
# config.bind('<Alt-Backspace>', 'rl-backward-kill-word', mode='prompt')
# config.bind('<Alt-D>', 'rl-kill-word', mode='prompt')
# config.bind('<Alt-F>', 'rl-forward-word', mode='prompt')
# config.bind('<Alt-Shift-Y>', 'prompt-yank --sel', mode='prompt')
# config.bind('<Alt-Y>', 'prompt-yank', mode='prompt')
# config.bind('<Ctrl-?>', 'rl-delete-char', mode='prompt')
# config.bind('<Ctrl-A>', 'rl-beginning-of-line', mode='prompt')
# config.bind('<Ctrl-B>', 'rl-backward-char', mode='prompt')
# config.bind('<Ctrl-E>', 'rl-end-of-line', mode='prompt')
# config.bind('<Ctrl-F>', 'rl-forward-char', mode='prompt')
# config.bind('<Ctrl-H>', 'rl-backward-delete-char', mode='prompt')
# config.bind('<Ctrl-K>', 'rl-kill-line', mode='prompt')
# config.bind('<Ctrl-P>', 'prompt-open-download --pdfjs', mode='prompt')
# config.bind('<Ctrl-U>', 'rl-unix-line-discard', mode='prompt')
# config.bind('<Ctrl-W>', 'rl-unix-word-rubout', mode='prompt')
# config.bind('<Ctrl-X>', 'prompt-open-download', mode='prompt')
# config.bind('<Ctrl-Y>', 'rl-yank', mode='prompt')
# config.bind('<Down>', 'prompt-item-focus next', mode='prompt')
# config.bind('<Escape>', 'leave-mode', mode='prompt')
# config.bind('<Return>', 'prompt-accept', mode='prompt')
# config.bind('<Shift-Tab>', 'prompt-item-focus prev', mode='prompt')
# config.bind('<Tab>', 'prompt-item-focus next', mode='prompt')
# config.bind('<Up>', 'prompt-item-focus prev', mode='prompt')
#+END_SRC
** Bindings for register mode
#+BEGIN_SRC conf
# config.bind('<Escape>', 'leave-mode', mode='register')
#+END_SRC
** Bindings for yesno mode
#+BEGIN_SRC conf
# config.bind('<Alt-Shift-Y>', 'prompt-yank --sel', mode='yesno')
# config.bind('<Alt-Y>', 'prompt-yank', mode='yesno')
# config.bind('<Escape>', 'leave-mode', mode='yesno')
# config.bind('<Return>', 'prompt-accept', mode='yesno')
# config.bind('n', 'prompt-accept no', mode='yesno')
# config.bind('y', 'prompt-accept yes', mode='yesno')
#+END_SRC
** Custom Bindings
Use Pass to fill password and username
#+BEGIN_SRC conf
config.bind(',p', 'spawn --userscript password_fill')
#+END_SRC
Open Youtube video using MPV
#+BEGIN_SRC conf
config.bind(',m', 'spawn mpv {url}')
config.bind(',M', ':hint links spawn mpv {hint-url}')
#+END_SRC
Cast to Chromecast
#+BEGIN_SRC conf
config.bind(',c', ':hint links spawn catt cast {hint-url}')
#+END_SRC

902
dotfiles/ranger.org Normal file
View File

@ -0,0 +1,902 @@
#+TITLE: Ranger Configuration
* Config
:PROPERTIES:
:header-args: :tangle ~/.config/ranger/rc.conf
:header-args+: :comments both :mkdirp yes
:END:
** Options
#+BEGIN_SRC conf
# Which viewmode should be used? Possible values are:
# miller: Use miller columns which show multiple levels of the hierarchy
# multipane: Midnight-commander like multipane view showing all tabs next
# to each other
set viewmode miller
#set viewmode multipane
# How many columns are there, and what are their relative widths?
set column_ratios 1,3,4
# Which files should be hidden? (regular expression)
#set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
set hidden_filter ^\.|\.(?:pyc|vrb|pyo|lof|bak|swp|aux|log|nav|out|snm|toc|bcf|run\.xml|synctex\.gz|blg|bbl)$|^lost\+found$|^__(py)?cache__$
# Show hidden files? You can toggle this by typing 'zh'
set show_hidden false
# Ask for a confirmation when running the "delete" command?
# Valid values are "always", "never", "multiple" (default)
# With "multiple", ranger will ask only if you delete multiple files at once.
set confirm_on_delete multiple
# Which script is used to generate file previews?
# ranger ships with scope.sh, a script that calls external programs (see
# README.md for dependencies) to preview images, archives, etc.
set preview_script ~/.config/ranger/scope.sh
# Use the external preview script or display simple plain text or image previews?
set use_preview_script true
# Automatically count files in the directory, even before entering them?
set automatically_count_files true
# Open all images in this directory when running certain image viewers
# like feh or sxiv? You can still open selected files by marking them.
# TODO
set open_all_images true
# Be aware of version control systems and display information.
set vcs_aware false
# State of the three backends git, hg, bzr. The possible states are
# disabled, local (only show local info), enabled (show local and remote
# information).
set vcs_backend_git enabled
set vcs_backend_hg disabled
set vcs_backend_bzr disabled
# Use one of the supported image preview protocols
set preview_images true
# Set the preview image method
# TODO
set preview_images_method w3m
# Use a unicode "..." character to mark cut-off filenames?
set unicode_ellipsis false
# Show dotfiles in the bookmark preview box?
set show_hidden_bookmarks true
# Which colorscheme to use? These colorschemes are available by default:
# default, jungle, snow, solarized
set colorscheme solarized
# Preview files on the rightmost column?
# And collapse (shrink) the last column if there is nothing to preview?
set preview_files true
set preview_directories true
set collapse_preview true
# Save the console history on exit?
set save_console_history false
# Draw the status bar on top of the browser window (default: bottom)
set status_bar_on_top false
# Draw a progress bar in the status bar which displays the average state of all
# currently running tasks which support progress bars?
set draw_progress_bar_in_status_bar true
# Draw borders around columns?
set draw_borders true
# Display the directory name in tabs?
set dirname_in_tabs false
# Enable the mouse support?
set mouse_enabled true
# Display the file size in the main column or status bar?
set display_size_in_main_column true
set display_size_in_status_bar true
# Display files tags in all columns or only in main column?
set display_tags_in_all_columns true
# Set a title for the window?
set update_title false
# Set the title to "ranger" in the tmux program?
set update_tmux_title false
# Shorten the title if it gets long? The number defines how many
# directories are displayed at once, 0 turns off this feature.
set shorten_title 3
# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
set tilde_in_titlebar true
# How many directory-changes or console-commands should be kept in history?
set max_history_size 20
set max_console_history_size 50
# Try to keep so much space between the top/bottom border when scrolling:
set scroll_offset 8
# Flush the input after each key hit? (Noticeable when ranger lags)
set flushinput true
# Padding on the right when there's no preview?
# This allows you to click into the space to run the file.
set padding_right true
# Save bookmarks (used with mX and `X) instantly?
# This helps to synchronize bookmarks between multiple ranger
# instances but leads to *slight* performance loss.
# When false, bookmarks are saved when ranger is exited.
set autosave_bookmarks false
# You can display the "real" cumulative size of directories by using the
# command :get_cumulative_size or typing "dc". The size is expensive to
# calculate and will not be updated automatically. You can choose
# to update it automatically though by turning on this option:
set autoupdate_cumulative_size false
# Turning this on makes sense for screen readers:
set show_cursor false
# One of: size, natural, basename, atime, ctime, mtime, type, random
set sort natural
# Additional sorting options
set sort_reverse false
set sort_case_insensitive true
set sort_directories_first true
set sort_unicode false
# Enable this if key combinations with the Alt Key don't work for you.
# (Especially on xterm)
set xterm_alt_key false
# Whether to include bookmarks in cd command
set cd_bookmarks false
# Avoid previewing files larger than this size, in bytes. Use a value of 0 to
# disable this feature.
set preview_max_size 0
# Add the highlighted file to the path in the titlebar
set show_selection_in_titlebar true
# The delay that ranger idly waits for user input, in milliseconds, with a
# resolution of 100ms. Lower delay reduces lag between directory updates but
# increases CPU load.
set idle_delay 2000
# When the metadata manager module looks for metadata, should it only look for
# a ".metadata.json" file in the current directory, or do a deep search and
# check all directories above the current one as well?
set metadata_deep_search false
# Clear all existing filters when leaving a directory
set clear_filters_on_dir_change false
# Disable displaying line numbers in main column
set line_numbers false
#+END_SRC
** Command Aliases in the Console
#+BEGIN_SRC conf
alias e edit
alias q quit
alias q! quitall
alias qa quitall
alias qall quitall
alias setl setlocal
alias filter scout -prt
alias find scout -aeit
alias mark scout -mr
alias unmark scout -Mr
alias search scout -rs
alias search_inc scout -rts
alias travel scout -aefiklst
#+END_SRC
** Some Custom Keybindings
*** Extract
#+BEGIN_SRC conf
map X shell extract %f
#+END_SRC
*** TODO Compress
#+BEGIN_SRC conf
map Z shell tar -cvzf %f.tar.gz %f
#+END_SRC
*** Delete first page of pdf
#+BEGIN_SRC conf
map Cp shell ~/scripts/pdf-delete-first-page.sh %f
#+END_SRC
** Define keys for the browser
*** Basic
#+BEGIN_SRC conf
map Q quit!
map q quit
copymap q ZZ ZQ
map R reload_cwd
map <C-r> reset
map <C-l> redraw_window
map <C-c> abort
map <esc> change_mode normal
map ~ set viewmode!
map i display_file
map ? help
map W display_log
map w taskview_open
map : console
map ; console
map ! console shell%space
map @ console -p6 shell %%s
map # console shell -p%space
#+END_SRC
*** Open Shell in current directory
#+BEGIN_SRC conf
map s shell $SHELL
# Open External Shell in current directory
map S shell nohup termite &
map r chain draw_possible_programs; console open_with%%space
#+END_SRC
*** Filter
#+BEGIN_SRC conf
map f console filter%space
# Reset filter
map F filter
map cd console cd%space
#+END_SRC
*** Change the line mode
#+BEGIN_SRC conf
map Mf linemode filename
map Mi linemode fileinfo
map Mm linemode mtime
map Mp linemode permissions
map Ms linemode sizemtime
map Mt linemode metatitle
#+END_SRC
*** Tagging / Marking
#+BEGIN_SRC conf
map t tag_toggle
map ut tag_remove
map <Space> mark_files toggle=True
map v mark_files all=True toggle=True
map uv mark_files all=True val=False
map V toggle_visual_mode
map uV toggle_visual_mode reverse=True
#+END_SRC
*** VIM-like
#+BEGIN_SRC conf
copymap <UP> k
copymap <DOWN> j
copymap <LEFT> h
copymap <RIGHT> l
copymap <HOME> gg
copymap <END> G
copymap <PAGEDOWN> <C-F>
copymap <PAGEUP> <C-B>
#+END_SRC
*** TODO - Is that usefull?
#+BEGIN_SRC conf
map J move down=0.5 pages=True
map K move up=0.5 pages=True
copymap J <C-D>
copymap K <C-U>
#+END_SRC
*** Jumping around
#+BEGIN_SRC conf
map H history_go -1
map L history_go 1
map ] move_parent 1
map [ move_parent -1
map } traverse
#+END_SRC
*** TODO Go to special folders
#+BEGIN_SRC conf
map gh cd ~
map gd cd ~/gdrive/These
map gD cd ~/Downloads
#+END_SRC
*** External Programs
#+BEGIN_SRC conf
map E edit
#+END_SRC
*** Get size of folders
#+BEGIN_SRC conf
# Get size of all folders
map du shell -p du --max-depth=1 -h --apparent-size
# Get size of all folders and sort them
map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
#+END_SRC
*** Yank path of directory/file
#+BEGIN_SRC conf
# Yank path of current directory/file
map yp shell -f echo -n %d/%f | xsel -i; xsel -o | xsel -i -b
# Yank path of directory
map yd shell -f echo -n %d | xsel -i; xsel -o | xsel -i -b
# Yank filename
map yn shell -f echo -n %f | xsel -i; xsel -o | xsel -i -b
#+END_SRC
*** Filesystem Operations
#+BEGIN_SRC conf
map = chmod
#+END_SRC
*** TODO Rename
#+BEGIN_SRC conf
#map cw console rename%space
map cw eval fm.execute_console("bulkrename") if fm.thisdir.marked_items else fm.open_console("rename ")
#+END_SRC
*** Rename files - like vim bindings
#+BEGIN_SRC conf
map a rename_append
map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
#+END_SRC
*** Paste files
#+BEGIN_SRC conf
map pp paste
map po paste overwrite=True
map pP paste append=True
map pO paste overwrite=True append=True
map pl paste_symlink relative=False
map pL paste_symlink relative=True
map phl paste_hardlink
map pht paste_hardlinked_subtree
#+END_SRC
*** Delete and move files
#+BEGIN_SRC conf
map dD console delete
map dd cut
map ud uncut
map da cut mode=add
map dr cut mode=remove
map dt cut mode=toggle
#+END_SRC
*** Copy files
#+BEGIN_SRC conf
map yy copy
map uy uncut
map ya copy mode=add
map yr copy mode=remove
map yt copy mode=toggle
#+END_SRC
*** Temporary workarounds
#+BEGIN_SRC conf
map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier)
map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier)
map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier)
map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier)
#+END_SRC
*** Searching
#+BEGIN_SRC conf
map / console search%space
map n search_next
map N search_next forward=False
map ct search_next order=tag
map cs search_next order=size
map ci search_next order=mimetype
map cc search_next order=ctime
map cm search_next order=mtime
map ca search_next order=atime
#+END_SRC
*** Tabs
#+BEGIN_SRC conf
map <C-n> tab_new ~
map <C-w> tab_close
map <TAB> tab_move 1
map <S-TAB> tab_move -1
map <A-Right> tab_move 1
map <A-Left> tab_move -1
map gt tab_move 1
map gT tab_move -1
map gn tab_new ~
map gc tab_close
map uq tab_restore
map <a-1> tab_open 1
map <a-2> tab_open 2
map <a-3> tab_open 3
map <a-4> tab_open 4
map <a-5> tab_open 5
map <a-6> tab_open 6
map <a-7> tab_open 7
map <a-8> tab_open 8
map <a-9> tab_open 9
#+END_SRC
*** Sorting
#+BEGIN_SRC conf
map or set sort_reverse!
map oz set sort=random
map os chain set sort=size; set sort_reverse=False
map ob chain set sort=basename; set sort_reverse=False
map on chain set sort=natural; set sort_reverse=False
map om chain set sort=mtime; set sort_reverse=False
map oc chain set sort=ctime; set sort_reverse=False
map oa chain set sort=atime; set sort_reverse=False
map ot chain set sort=type; set sort_reverse=False
map oe chain set sort=extension; set sort_reverse=False
map oS chain set sort=size; set sort_reverse=True
map oB chain set sort=basename; set sort_reverse=True
map oN chain set sort=natural; set sort_reverse=True
map oM chain set sort=mtime; set sort_reverse=True
map oC chain set sort=ctime; set sort_reverse=True
map oA chain set sort=atime; set sort_reverse=True
map oT chain set sort=type; set sort_reverse=True
map oE chain set sort=extension; set sort_reverse=True
map dc get_cumulative_size
#+END_SRC
*** Settings
#+BEGIN_SRC conf
map zc set collapse_preview!
map zd set sort_directories_first!
map zh set show_hidden!
map <C-h> set show_hidden!
map zI set flushinput!
map zi set preview_images!
map zm set mouse_enabled!
map zp set preview_files!
map zP set preview_directories!
map zs set sort_case_insensitive!
map zu set autoupdate_cumulative_size!
map zv set use_preview_script!
map zf console filter%space
#+END_SRC
*** Bookmarks
#+BEGIN_SRC conf
map `<any> enter_bookmark %any
map '<any> enter_bookmark %any
map m<any> set_bookmark %any
map um<any> unset_bookmark %any
map m<bg> draw_bookmarks
copymap m<bg> um<bg> `<bg> '<bg>
#+END_SRC
*** Custom Mapping
#+BEGIN_SRC conf
map <C-f> fzf_select
#+END_SRC
*** Generate all the chmod bindings with some python help:
#+BEGIN_SRC conf
eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg))
#+END_SRC
** Define keys for the console
*** Basic
#+BEGIN_SRC conf
cmap <tab> eval fm.ui.console.tab()
cmap <s-tab> eval fm.ui.console.tab(-1)
cmap <ESC> eval fm.ui.console.close()
cmap <CR> eval fm.ui.console.execute()
cmap <C-l> redraw_window
copycmap <ESC> <C-c>
copycmap <CR> <C-j>
#+END_SRC
*** Move around
#+BEGIN_SRC conf
cmap <up> eval fm.ui.console.history_move(-1)
cmap <down> eval fm.ui.console.history_move(1)
cmap <left> eval fm.ui.console.move(left=1)
cmap <right> eval fm.ui.console.move(right=1)
cmap <home> eval fm.ui.console.move(right=0, absolute=True)
cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
cmap <a-left> eval fm.ui.console.move_word(left=1)
cmap <a-right> eval fm.ui.console.move_word(right=1)
#+END_SRC
*** Line Editing
#+BEGIN_SRC conf
cmap <backspace> eval fm.ui.console.delete(-1)
cmap <delete> eval fm.ui.console.delete(0)
cmap <C-w> eval fm.ui.console.delete_word()
cmap <A-d> eval fm.ui.console.delete_word(backward=False)
cmap <C-k> eval fm.ui.console.delete_rest(1)
cmap <C-u> eval fm.ui.console.delete_rest(-1)
cmap <C-y> eval fm.ui.console.paste()
#+END_SRC
*** And of course the emacs way
#+BEGIN_SRC conf
copycmap <up> <C-p>
copycmap <down> <C-n>
copycmap <left> <C-b>
copycmap <right> <C-f>
copycmap <home> <C-a>
copycmap <end> <C-e>
copycmap <delete> <C-d>
copycmap <backspace> <C-h>
#+END_SRC
*** Others
#+BEGIN_SRC conf
# Note: There are multiple ways to express backspaces. <backspace> (code 263)
# and <backspace2> (code 127). To be sure, use both.
copycmap <backspace> <backspace2>
# This special expression allows typing in numerals:
cmap <allow_quantifiers> false
#+END_SRC
** Pager Keybindings
*** Movement
#+BEGIN_SRC conf
pmap <down> pager_move down=1
pmap <up> pager_move up=1
pmap <left> pager_move left=4
pmap <right> pager_move right=4
pmap <home> pager_move to=0
pmap <end> pager_move to=-1
pmap <pagedown> pager_move down=1.0 pages=True
pmap <pageup> pager_move up=1.0 pages=True
pmap <C-d> pager_move down=0.5 pages=True
pmap <C-u> pager_move up=0.5 pages=True
copypmap <UP> k <C-p>
copypmap <DOWN> j <C-n> <CR>
copypmap <LEFT> h
copypmap <RIGHT> l
copypmap <HOME> g
copypmap <END> G
copypmap <C-d> d
copypmap <C-u> u
copypmap <PAGEDOWN> n f <C-F> <Space>
copypmap <PAGEUP> p b <C-B>
#+END_SRC
*** Basic
#+BEGIN_SRC conf
pmap <C-l> redraw_window
pmap <ESC> pager_close
copypmap <ESC> q Q i <F3>
pmap E edit_file
#+END_SRC
** Taskview Keybindings
*** Movement
#+BEGIN_SRC conf
tmap <up> taskview_move up=1
tmap <down> taskview_move down=1
tmap <home> taskview_move to=0
tmap <end> taskview_move to=-1
tmap <pagedown> taskview_move down=1.0 pages=True
tmap <pageup> taskview_move up=1.0 pages=True
tmap <C-d> taskview_move down=0.5 pages=True
tmap <C-u> taskview_move up=0.5 pages=True
copytmap <UP> k <C-p>
copytmap <DOWN> j <C-n> <CR>
copytmap <HOME> g
copytmap <END> G
copytmap <C-u> u
copytmap <PAGEDOWN> n f <C-F> <Space>
copytmap <PAGEUP> p b <C-B>
#+END_SRC
*** Changing priority and deleting tasks
#+BEGIN_SRC conf
tmap J eval -q fm.ui.taskview.task_move(-1)
tmap K eval -q fm.ui.taskview.task_move(0)
tmap dd eval -q fm.ui.taskview.task_remove()
tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
tmap <pageup> eval -q fm.ui.taskview.task_move(0)
tmap <delete> eval -q fm.ui.taskview.task_remove()
#+END_SRC
*** Basic
#+BEGIN_SRC conf
tmap <C-l> redraw_window
tmap <ESC> taskview_close
copytmap <ESC> q Q w <C-c>
default_linemode devicons
#+END_SRC
* Rifle
:PROPERTIES:
:header-args: :tangle ~/.config/ranger/rifle.conf
:header-args+: :comments both :mkdirp yes
:END:
#+BEGIN_SRC conf
# This is the configuration file of "rifle", ranger's file executor/opener.
# Each line consists of conditions and a command. For each line the conditions
# are checked and if they are met, the respective command is run.
#
# Syntax:
# <condition1> , <condition2> , ... = command
#
# The command can contain these environment variables:
# $1-$9 | The n-th selected file
# $@ | All selected files
#
# If you use the special command "ask", rifle will ask you what program to run.
#
# Prefixing a condition with "!" will negate its result.
# These conditions are currently supported:
# match <regexp> | The regexp matches $1
# ext <regexp> | The regexp matches the extension of $1
# mime <regexp> | The regexp matches the mime type of $1
# name <regexp> | The regexp matches the basename of $1
# path <regexp> | The regexp matches the absolute path of $1
# has <program> | The program is installed (i.e. located in $PATH)
# env <variable> | The environment variable "variable" is non-empty
# file | $1 is a file
# directory | $1 is a directory
# number <n> | change the number of this command to n
# terminal | stdin, stderr and stdout are connected to a terminal
# X | $DISPLAY is not empty (i.e. Xorg runs)
#
# There are also pseudo-conditions which have a "side effect":
# flag <flags> | Change how the program is run. See below.
# label <label> | Assign a label or name to the command so it can
# | be started with :open_with <label> in ranger
# | or `rifle -p <label>` in the standalone executable.
# else | Always true.
#
# Flags are single characters which slightly transform the command:
# f | Fork the program, make it run in the background.
# | New command = setsid $command >& /dev/null &
# r | Execute the command with root permissions
# | New command = sudo $command
# t | Run the program in a new terminal. If $TERMCMD is not defined,
# | rifle will attempt to extract it from $TERM.
# | New command = $TERMCMD -e $command
# Note: The "New command" serves only as an illustration, the exact
# implementation may differ.
# Note: When using rifle in ranger, there is an additional flag "c" for
# only running the current file even if you have marked multiple files.
#-------------------------------------------
# Websites
#-------------------------------------------
# Rarely installed browsers get higher priority; It is assumed that if you
# install a rare browser, you probably use it. Firefox/konqueror/w3m on the
# other hand are often only installed as fallback browsers.
ext x?html?, has vimprobable, X, flag f = vimprobable -- "$@"
ext x?html?, has vimprobable2, X, flag f = vimprobable2 -- "$@"
ext x?html?, has qutebrowser, X, flag f = qutebrowser -- "$@"
ext x?html?, has chromium, X, flag f = chromium -- "$@"
ext x?html?, has firefox, X, flag f = firefox -- "$@"
ext x?html?, has elinks, terminal = elinks "$@"
ext x?html?, has links2, terminal = links2 "$@"
ext x?html?, has links, terminal = links "$@"
ext x?html?, has lynx, terminal = lynx -- "$@"
ext x?html?, has w3m, terminal = w3m "$@"
#Spreadsheets for scim
ext sc|csv|sxc|xlsx?|xlt|xlw|gnm|gnumeric, = sc-im -- "$@"
#-------------------------------------------
# Misc
#-------------------------------------------
# Define the "editor" for text files as first action
mime ^text, label editor = $EDITOR -- "$@"
mime ^text, label pager = "$PAGER" -- "$@"
!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php = $EDITOR -- "$@"
!mime ^text, label pager, ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
ext 1 = man "$1"
ext s[wmf]c, has zsnes, X = zsnes "$1"
ext s[wmf]c, has snes9x-gtk,X = snes9x-gtk "$1"
ext nes, has fceux, X = fceux "$1"
ext exe = wine "$1"
name ^[mM]akefile$ = make
#--------------------------------------------
# Code
#-------------------------------------------
ext py = python -- "$1"
ext pl = perl -- "$1"
ext rb = ruby -- "$1"
ext js = node -- "$1"
ext sh = sh -- "$1"
ext php = php -- "$1"
#--------------------------------------------
# Video/Audio with a GUI
#-------------------------------------------
mime ^video, has mpv, X, flag f = mpv -- "$@"
mime ^video, has mpv, X, flag f = mpv --fs -- "$@"
mime ^video, has mpv, X, flag f = mpv --loop -- "$@"
#--------------------------------------------
# Audio without X
#-------------------------------------------
mime ^audio|ogg$, terminal, has mpv = mpv --no-audio-display -- "$@"
mime ^audio|ogg$ = tag "$@"
mime ^audio|ogg$, terminal, has mpv = mpv -- "$@"
#--------------------------------------------
# Video without X:
#-------------------------------------------
mime ^video, terminal, !X, has mpv = mpv -- "$@"
mime ^video, terminal, !X, has mplayer2 = mplayer2 -- "$@"
mime ^video, terminal, !X, has mplayer = mplayer -- "$@"
#-------------------------------------------
# Documents
#-------------------------------------------
ext pdf, has llpp, X, flag f = llpp "$@"
ext pdf, has zathura, X, flag f = zathura -- "$@"
ext pdf, has mupdf, X, flag f = mupdf "$@"
ext pdf, has mupdf, X, flag f = mupdf -I "$@"
ext pdf, has mupdf-x11,X, flag f = mupdf-x11 "$@"
ext pdf, has apvlv, X, flag f = apvlv -- "$@"
ext pdf, has xpdf, X, flag f = xpdf -- "$@"
ext pdf, has evince, X, flag f = evince -- "$@"
ext pdf, has atril, X, flag f = atril -- "$@"
ext pdf, has okular, X, flag f = okular -- "$@"
ext pdf, has epdfview, X, flag f = epdfview -- "$@"
ext pdf, has qpdfview, X, flag f = qpdfview "$@"
ext epub, has zathura, X, flag f = zathura -- "$@"
ext epub, has mupdf, X, flag f = mupdf "$@"
ext docx, has abiword, X, flag f = abiword "$@"
ext docx?, has catdoc, terminal = catdoc -- "$@" | "$PAGER"
ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has gnumeric, X, flag f = gnumeric -- "$@"
ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has kspread, X, flag f = kspread -- "$@"
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has libreoffice, X, flag f = libreoffice "$@"
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has soffice, X, flag f = soffice "$@"
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has ooffice, X, flag f = ooffice "$@"
ext djvu, has zathura,X, flag f = zathura -- "$@"
ext djvu, has evince, X, flag f = evince -- "$@"
ext djvu, has atril, X, flag f = atril -- "$@"
#-------------------------------------------
# Image Viewing:
#-------------------------------------------
mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@"
mime ^image/svg, has display, X, flag f = display -- "$@"
mime ^image/gif, has mpv, X, flag f = mpv --loop -- "$@"
mime ^image/gif, has viewnior, X, flag f = viewnior -- "$@"
mime ^image/gif, has qutebrowser, X, flag f = qutebrowser -- "$@"
ext xcf, X, flag f = gimp -- "$@"
mime ^image, has feh, X, flag f = feh --scale-down --auto-zoom --image-bg black -- "$@"
mime ^image, has feh, X, flag f = feh --scale-down --auto-zoom -- "$@"
mime ^image, has sxiv, X, flag f = sxiv -- "$@"
mime ^image, has mirage, X, flag f = mirage -- "$@"
mime ^image, has ristretto, X, flag f = ristretto "$@"
mime ^image, has eog, X, flag f = eog -- "$@"
mime ^image, has eom, X, flag f = eom -- "$@"
mime ^image, has gimp, X, flag f = gimp -- "$@"
mime ^image, has pinta, X, flag f = pinta -- "$@"
mime ^image, has mypaint, X, flag f = mypaint -- "$@"
mime ^image, has kolourpaint, X, flag f = kolourpaint -- "$@"
#-------------------------------------------
# Archives
#-------------------------------------------
# This requires atool
ext jar = java -jar "$@"
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has als = als -- "$@" | "$PAGER"
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has als = als -- "$@" | "$PAGER"
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has aunpack = aunpack -- "$@"
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has aunpack = aunpack -- "$@"
# Fallback:
ext tar|gz, has tar = tar vvtf "$@" | "$PAGER"
ext tar|gz, has tar = tar vvxf "$@"
#-------------------------------------------
# Misc
#-------------------------------------------
label wallpaper, number 11, mime ^image, has feh, X = feh --bg-scale "$1"
label wallpaper, number 12, mime ^image, has feh, X = feh --bg-tile "$1"
label wallpaper, number 13, mime ^image, has feh, X = feh --bg-center "$1"
label wallpaper, number 14, mime ^image, has feh, X = feh --bg-fill "$1"
# Define the editor for non-text files + pager as last action
!mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ask
label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = $EDITOR -- "$@"
label pager, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
ext blend, has blender, X, flag f = blender -- "$@"
#+END_SRC
* Ranger Commands
:PROPERTIES:
:header-args: :tangle ~/.config/ranger/commands.py
:header-args+: :comments both :mkdirp yes
:END:
** Import
#+begin_src python
from ranger.api.commands import *
import os
#+end_src
** fzf_select
#+begin_src python
class fzf_select(Command):
"""
:fzf_select
Find a file using fzf.
With a prefix argument select only directories.
See: https://github.com/junegunn/fzf
"""
def execute(self):
import subprocess
import os.path
if self.quantifier:
# match only directories
command="find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune \
-o -type d -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
else:
# match files and directories
command="find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune \
-o -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
fzf = self.fm.execute_command(command, universal_newlines=True, stdout=subprocess.PIPE)
stdout, stderr = fzf.communicate()
if fzf.returncode == 0:
fzf_file = os.path.abspath(stdout.rstrip('\n'))
if os.path.isdir(fzf_file):
self.fm.cd(fzf_file)
else:
self.fm.select_file(fzf_file)
#+end_src

476
dotfiles/rofi.org Normal file
View File

@ -0,0 +1,476 @@
#+TITLE: Rofi Configuration
* Rofi
:PROPERTIES:
:header-args: :tangle ~/.config/rofi/config
:header-args+: :comments both :mkdirp yes
:END:
#+BEGIN_SRC conf
! Base16 Solarized Light
! Author: Ethan Schoonover (http://ethanschoonover.com/solarized)
! base00: #fdf6e3
! base01: #eee8d5
! base02: #93a1a1
! base03: #839496
! base04: #657b83
! base05: #586e75
! base06: #073642
! base07: #002b36
! base08: #dc322f
! base09: #cb4b16
! base0A: #b58900
! base0B: #859900
! base0C: #2aa198
! base0D: #268bd2
! base0E: #6c71c4
! base0F: #d33682
! Enable the extended coloring options
rofi.color-enabled: true
! Property Name BG Border Separator
rofi.color-window: #eee8d5, #eee8d5, #fdf6e3
! Property Name BG FG BG-alt Head-BG Head-FG
rofi.color-normal: #eee8d5, #586e75, #eee8d5, #eee8d5, #002b36
rofi.color-active: #eee8d5, #268bd2, #eee8d5, #eee8d5, #268bd2
rofi.color-urgent: #eee8d5, #dc322f, #eee8d5, #eee8d5, #dc322f
! Set the desired separator style
rofi.separator-style: solid
#+END_SRC
* Rofi Menu Config
:PROPERTIES:
:header-args: :tangle ~/.config/rofimenu/rofimenu.config
:header-args+: :comments both :mkdirp yes
:END:
#+BEGIN_SRC conf
#!/bin/bash
# =============================================================
# Configuration file for rofimenu script
#
# Top level menu consists of modi names from modilist.
# Modilist is a comma separated list of default modi (drun,run...) and/or custom modi.
# Names of default modi can be set as rofi options (e.g. -display-drun Applications).
# Custom modi format: "modi_name:modi_script".
# Menu functions from this script can be used as modi like this "<menu_name>:$thisscript -menu <menu_function>"
# =============================================================
# pause needed for smooth transition when menu command refers to other modi
DELAY=0.06
delay() {
sleep $DELAY
}
# define modi labels for menu
FAV=" Favourites"
DRUN=" Applications"
CAT=" Categories"
RUN=" Run"
MENU=" Edit Menu"
EXIT=" Exit"
modilist="\
$FAV:$thisscript -menu ${FAV#* },\
drun,\
$CAT:$thisscript -menu ${CAT#* },\
run,\
$MENU:$thisscript -menu Menu_settings,\
$EXIT:$thisscript -menu ${EXIT#* }"
# Menu functions print lines in format "label:command".
Menu_settings() {
echo " Edit config:$GUI_EDITOR $ROFIMENU_CONFIG && $thisscript -show \'$MENU\'"
echo " Reset config:rm $ROFIMENU_CONFIG && delay; $thisscript -show \'$MENU\'"
echo "──────────────:true"
echo " Edit theme:$GUI_EDITOR $ROFIMENU_THEME && $thisscript -show \'$MENU\'"
echo " Reset theme:rm $ROFIMENU_THEME && delay; $thisscript -show \'$MENU\'"
}
Favourites() {
echo " Terminal:default-terminal"
echo " File Manager:xdg-open ~"
echo " Browser:default-browser"
echo " Settings:default-terminal -e bmenu"
echo " Search:rofi-finder.sh"
# echo "$EXIT: delay; delay; $thisscript -show \'$EXIT\'" # This refers to modi from the same script; needs delay
}
Exit() {
echo " lock:screenlock"
echo " suspend:systemctl suspend"
echo " hibernate:systemctl hibernate"
echo " logout:xdotool key --clearmodifiers super+shift+q"
echo " reboot:systemctl reboot"
echo " poweroff:systemctl poweroff"
}
Categories() {
SUBMENU_MARK=""
IFS='
'
# Newline separated list, each line has format "[symbol ][alias:]category"
# Category with alias will be shown in menu under that alias
# The first entry below is an alias for " " so it shows all applications
desired="\
 Applications:
 Favorites
 Accessories:Utility
 Development
 Documentation
 Education
 Graphics
 Internet:Network
 Multimedia:AudioVideo
 Office
 Settings
 System"
# determine max line length and set tab position for subcategory mark
maxlength=0
for line in $desired ; do
label="${line%:*}"
if [ ${#label} -gt $maxlength ] ; then
maxlength=${#label}
fi
done
submenu_tab=$(($maxlength+3))
present="$(grep Categories /usr/share/applications/*.desktop \
| cut -d'=' -f2 \
| sed 's/;/\n/g' \
| LC_COLLATE=POSIX sort --ignore-case --unique)"
linenumber=0
for line in $desired ; do
category="${line##*[ :]}"
label="$(echo -e ${line%:*}\\t${SUBMENU_MARK} | expand -t $submenu_tab)" ## add submenu mark
if [ $(echo "$present"|grep -w -c "$category") -gt 0 ] ; then
echo "$label:activate_category \"$label\" \"$category\" $linenumber"
linenumber=$(($linenumber+1))
fi
done
}
# Desktop menu parameters
DT_MODI="Desktop:$thisscript -menu Desktop"
Desktop() {
echo " Terminal:default-terminal"
echo " File Manager:xdg-open ~"
echo " Browser:default-browser"
#TODO determine number of lines before categories
addlinenumber=3
eval $(xdotool search --class rofi getwindowgeometry --shell)
Categories|sed "s/\$/ $addlinenumber $X $Y/" # pass additional lines number, X, Y
echo " Search:rofi-finder.sh"
}
DT_WIDTH=200 # pixels
##TODO determine desktop menu line height according to theme
DT_LINE_HEIGHT=23 # pixels
DT_THEME="
*{
lines: 20;
scrollbar: false;
dynamic: true;
}
#window {
width: ${DT_WIDTH}px;
children: [ dt-mainbox ];
}
#sidebar {
enabled: false;
}
#button {
width: ${DT_WIDTH}px;
padding: 2px 1ch;
}
#inputbar {
enabled: false;
}"
activate_category() { # shows drun modi filtered with category. If no command selected, returns to categories modi
label="${1% *}" # remove submenu mark
category="$2"
linenumber="$3"
theme=""
goback="$thisscript -show \"$CAT\""
if [ $# -gt 3 ] ; then # that means categories for desktop menu, number of lines before categories, X, Y
addlinenumber=$4
X=$5
Y=$6
linenumber=$(($linenumber+$addlinenumber))
if [ $linenumber -gt 0 ] ; then
i=$linenumber
dummy="true"
dummyline="textboxdummy"
while [ $i -gt 1 ] ; do
dummyline="textboxdummy,$dummyline"
i=$(($i-1))
done
else
dummy="false"
fi
# adjust X if too close to the right side of the screen
MAX_X=$(wattr w $(lsw -r) )
anchor="north"
if [ $X -gt $((${MAX_X}-${DT_WIDTH}*2)) ] ; then
anchor="${anchor}east"
X=$MAX_X
else
anchor="${anchor}west"
fi
theme="$DT_THEME
* {
x-offset: $X;
y-offset: $Y;
anchor: $anchor;
}
#window {
width: $((${DT_WIDTH}*2));
}
#sidebar {
enabled: true;
}
#boxdummy {
enabled: $dummy;
children: [ $dummyline ];
}"
goback="$thisscript -desktop $X $Y"
fi
command=$(delay; $thisscript \
-only drun \
-drun-match-fields categories,name \
-display-drun "$label" \
-filter "$category " \
-run-command "echo {cmd}" \
-run-shell-command "echo {terminal} -e {cmd}" \
-theme-str "$theme")
if [ -n "$command" ] ; then
eval "$command" &
exit
fi
# return to categories modi. No delay needed
eval $goback &
if [ $linenumber -eq 0 ] ; then # if the category is on the top line
exit
fi
# move rofi selection down by linenumber
keys=""
while [ $linenumber -gt 0 ] ; do
keys="$keys Tab"
linenumber=$(($linenumber-1))
done
##TODO wait until rofi can take input
delay
delay
xdotool search --class rofi key --delay 0 $keys
}
## rofi theme file can be set here
# ROFIMENU_THEME="$HOME/.config/rofimenu/rofimenu.rasi"
#+END_SRC
* Theme
:PROPERTIES:
:header-args: :tangle ~/.config/rofimenu/rofimenu.rasi
:header-args+: :comments both :mkdirp yes
:END:
#+BEGIN_SRC conf
configuration {
me-select-entry: "MouseSecondary";
me-accept-entry: "MousePrimary";
scroll-method: 1;
show-icons: true;
sidebar-mode: true;
kb-custom-1: "";
kb-custom-2: "";
kb-custom-3: "";
kb-custom-4: "";
kb-custom-5: "";
kb-custom-6: "";
kb-custom-7: "";
kb-custom-8: "";
kb-custom-9: "";
kb-custom-10: "";
kb-select-1: "Alt+1";
kb-select-2: "Alt+2";
kb-select-3: "Alt+3";
kb-select-4: "Alt+4";
kb-select-5: "Alt+5";
kb-select-6: "Alt+6";
kb-select-7: "Alt+7";
kb-select-8: "Alt+8";
kb-select-9: "Alt+9";
kb-select-10: "Alt+0";
}
* {
//// COLORS ////
//// uncomment to match bspwm edition theme
background: #292f34FF;
background-color: #292f3400;
foreground: #F6F9FFFF;
selected: #1ABB9BFF;
selected-foreground: @foreground;
//// uncomment to match Adapta Nokto theme
// background: #222D32E8;
// background-color: #00000000;
// foreground: #CFD8DCFF;
// selected: #00BCD4FF;
// selected-foreground: #FFFFFFFF;
//// common - active and urgent
active-background: #3A464BFF;
urgent-background: #800000FF;
urgent-foreground: @foreground;
selected-urgent-background: @urgent-foreground;
selected-urgent-foreground: @urgent-background;
//// TEXT ////
font: "xos4 Terminus 18px";
// font: "Knack Nerd Font 16px";
text-color: @foreground;
//// PADDING ETC ////
margin: 0px;
border: 0px;
padding: 0px;
spacing: 0px;
elementpadding: 2px 0px;
elementmargin: 0px 2px;
listmargin: 0px 2px 0px 0px;
//// SIZE ////
windowwidth: 40ch;
buttonwidth: 18ch;
lines: 12;
fixed-height: false;
//// POSITION ////
location: northwest;
anchor: northwest;
x-offset: 0px;
y-offset: 24px;
//// LAYOUT ////
scrollbar: true;
//// uncomment to get submenu-like style
menustyle: [ sb-mainbox ];
buttonpadding: 2px 1ch;
button-bg: @background;
dynamic: true;
//// uncomment to get tabs-like style
// menustyle: [ tb-mainbox ];
// buttonpadding: 14px 1ch;
// dynamic: false;
}
//////////////////////////////////////////
window {
width: @windowwidth;
children: @menustyle;
}
//submenu-style
sb-mainbox {
orientation: horizontal;
children: [ sidebar, vertibox ];
}
//tabs-style
tb-mainbox {
orientation: vertical;
children: [ inputbar, horibox ];
background-color: @background;
}
//desktop-submenu
dt-mainbox {
orientation: vertical;
children: [ boxdummy, sb-mainbox ];
}
horibox {
orientation: horizontal;
children: [ listview, sidebar ];
}
sidebar {
orientation: vertical;
}
button {
horizontal-align: 0;
padding: @buttonpadding;
width: @buttonwidth;
background-color: @button-bg;
expand: false;
}
vertibox {
orientation: vertical;
children: [ inputbar, listview ];
background-color: @background;
}
prompt {
enabled: false;
}
listview {
margin: @listmargin;
}
scrollbar {
handle-width: 0.5ch;
handle-color: @selected;
}
boxdummy {
enabled: false;
orientation: vertical;
expand: false;
children: [ textboxdummy ];
}
textboxdummy {
str: " ";
}
element, inputbar, textboxdummy {
padding: @elementpadding;
margin: @elementmargin;
width: @elementwidth;
}
element.normal.active,
element.alternate.active {
background-color: @active-background;
text-color: @selected-foreground;
}
element.selected,
button.selected {
background-color: @selected;
text-color: @selected-foreground;
}
element.normal.urgent,
element.alternate.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
#+END_SRC

103
dotfiles/termite.org Normal file
View File

@ -0,0 +1,103 @@
#+TITLE: Termite Configuration
#+PROPERTY: header-args+ :comments both
#+PROPERTY: header-args+ :mkdirp yes
#+PROPERTY: header-args+ :tangle ~/.config/termite/config
#+BEGIN_SRC conf
[options]
#allow_bold = true
#audible_bell = false
#bold_is_bright = true
clickable_url = true
#dynamic_title = true
font = SauceCodePro Nerd Font Mono 10
#fullscreen = true
#icon_name = terminal
mouse_autohide = true
#scroll_on_output = false
#scroll_on_keystroke = true
# Length of the scrollback buffer, 0 disabled the scrollback buffer
# and setting it to a negative value means "infinite scrollback"
scrollback_lines = 10000
#search_wrap = true
#urgent_on_bell = true
#hyperlinks = false
# $BROWSER is used by default if set, with xdg-open as a fallback
#browser = xdg-open
# Hide links that are no longer valid in url select overlay mode
#filter_unmatched_urls = true
# Emit escape sequences for extra modified keys
#modify_other_keys = false
# set size hints for the window
#size_hints = false
# "off", "left" or "right"
#scrollbar = off
highlight = #2f2f2f
[hints]
#padding = 2
#border = #3f3f3f
#border_width = 0.5
#roundness = 2.0
# Scheme: Chris Kempson (http://chriskempson.com)
### END COLORS
[colors]
# Base16 Solarized Light
# Author: Ethan Schoonover (modified by aramisgithub)
foreground = #586e75
foreground_bold = #073642
cursor = #073642
cursor_foreground = #fdf6e3
background = rgb(253, 246, 227)
# 16 color space
# Black, Gray, Silver, White
color0 = #fdf6e3
color8 = #839496
color7 = #586e75
color15 = #002b36
# Red
color1 = #dc322f
color9 = #dc322f
# Green
color2 = #859900
color10 = #859900
# Yellow
color3 = #b58900
color11 = #b58900
# Blue
color4 = #268bd2
color12 = #268bd2
# Purple
color5 = #6c71c4
color13 = #6c71c4
# Teal
color6 = #2aa198
color14 = #2aa198
# Extra colors
color16 = #cb4b16
color17 = #d33682
color18 = #eee8d5
color19 = #93a1a1
color20 = #657b83
color21 = #073642
#+END_SRC

319
dotfiles/tmux.org Normal file
View File

@ -0,0 +1,319 @@
#+TITLE: Tmux Configuration
#+PROPERTY: header-args :tangle ~/.tmux.conf
#+PROPERTY: header-args+ :comments both :mkdirp yes
* Line
** Define colors
#+BEGIN_SRC conf
t_red="#ef5253" # red
t_red_light="#eb9798" # light red
t_red_dark="#c22627" # dark red
t_blue="#579cde" # blue
t_orange="#de9a57"
t_green="#57de9a"
t_grey_dark="#393939" # dark grey
t_grey_light="#d9d9d9" # light grey
t_grey="#ababab" # grey
t_1l_bg="#ef5253" # red
t_1l_fg="#393939" # dark grey
t_2l_bg="#4e4e4e" # dark grey
t_2l_fg="#e8e8e8" # grey
t_3l_bg="#ababab" # grey
t_3l_fg="#393939" # dark grey
t_4l_bg="#579cde" # blue
t_4l_fg="#393939" # dark grey
t_1r_bg="#909090"
t_1r_fg="#393939"
t_2r_bg="#4e4e4e"
t_2r_fg="#a0a0a0"
t_3r_bg="#ababab" # grey
t_3r_fg="#393939" # dark grey
t_line_bg="#18262f" # dark blue
t_line_fg="#393939" # dark grey
t_win_bg="#18262f" # dark blue
t_win_fg="#d9d9d9" # light grey
t_win_bg_active="#ef5253" # red
t_win_fg_active="#393939" # dark grey
t_text_fg="#d9d9d9" # light grey
t_text_bg="#393939" # dark grey
#+END_SRC
** General config
#+BEGIN_SRC conf
set -g status "on" # Activate the status bar
set -g status-attr "none"
set -g status-interval "2" # update status every x seconds
set -g status-justify "centre" # center the list of windows
set -g status-bg "$t_line_bg"
set -g status-fg "$t_line_fg"
#+END_SRC
** Contents of right and light status
#+BEGIN_SRC conf
t_1_l="#S"
t_2_l="%H:%M"
# t_3_l="#($HOME/.config/.tmux/bin/tmux_left_status)"
t_4_l="C"
t_1_r="%d/%m"
# t_2_r="#($HOME/.config/.tmux/bin/tmux_right_status)"
# t_3_r=""
#+END_SRC
** Status left and right
#+BEGIN_SRC conf
set -g status-left "#[fg=$t_1l_fg,bg=$t_1l_bg] $t_1_l #[fg=$t_1l_bg,bg=$t_2l_bg]#[fg=$t_2l_fg,bg=$t_2l_bg] $t_2_l #{?client_prefix,#[fg=$t_2l_bg]#[bg=$t_4l_bg]#[fg=$t_4l_fg]#[bg=$t_4l_bg] $t_4_l #[fg=$t_4l_bg]#[bg=$t_line_bg],#[fg=$t_2l_bg]#[bg=$t_line_bg]}"
# set -g status-left "#[fg=$t_1l_fg,bg=$t_1l_bg] $t_1_l #[fg=$t_1l_bg,bg=$t_2l_bg]#[fg=$t_2l_fg,bg=$t_2l_bg] $t_2_l #[fg=$t_2l_bg,bg=$t_3l_bg]#[fg=$t_2l_bg, bg=$t_3l_bg]$t_3_l#{?client_prefix,#[fg=$t_3l_bg]#[bg=$t_4l_bg]#[fg=$t_4l_fg]#[bg=$t_4l_bg] $t_4_l #[fg=$t_4l_bg]#[bg=$t_line_bg],#[fg=$t_3l_bg]#[bg=$t_line_bg]}"
set -g status-left-length "90"
set -g status-left-attr "none"
set -g status-right "#[fg=$t_1r_bg]#[fg=$t_1r_fg,bg=$t_1r_bg] $t_1_r "
# set -g status-right "#[fg=$t_3r_bg,bg=$t_line_bg]#[fg=$t_3r_fg, bg=$t_3r_bg] $t_3_r #[fg=$t_2r_bg,bg=$t_3r_bg]#[fg=$t_2r_fg,bg=$t_2r_bg] $t_2_r #[fg=$t_1r_bg,bg=$t_2r_bg]#[fg=$t_1r_fg,bg=$t_1r_bg] $t_1_r "
set -g status-right-length "90"
set -g status-right-attr "none"
#+END_SRC
** Message and commands
#+BEGIN_SRC conf
set -g message-fg "$t_text_fg"
set -g message-bg "$t_text_bg"
set -g message-command-fg "$t_text_fg"
set -g message-command-bg "$t_text_bg"
#+END_SRC
** Panes
#+BEGIN_SRC conf
set -g pane-border-fg "$t_grey_dark" # Color of the separation between panes
set -g pane-active-border-fg "$t_red_light" # Color of the active separation
#+END_SRC
** Windows
#+BEGIN_SRC conf
setw -g window-status-fg "$t_red"
setw -g window-status-bg "$t_grey_light"
setw -g window-status-attr "none"
setw -g window-status-activity-fg "$t_grey_dark"
setw -g window-status-activity-bg "$t_red"
setw -g window-status-activity-attr "bold"
setw -g window-status-separator " "
setw -g window-status-format "#[fg=$t_win_fg,bg=$t_win_bg] #I | #W "
setw -g window-status-current-format "#[fg=$t_win_bg_active,bg=$t_line_bg]#[fg=$t_win_fg_active,bg=$t_win_bg_active] #I | #W #[fg=$t_win_bg_active,bg=$t_line_bg]"
#+END_SRC
* Bindings
#+BEGIN_SRC conf
# Set prefix to 'C-Space'
unbind C-b
set -g prefix C-Space
# Reload the config using 'C-Space + r'
bind r source-file ~/.tmux.conf \; display-message "Config reloaded..."
# Simulate 'C-l' to clear the terminal
bind C-l send-keys C-l \; clear-history
# Open new panes with the path of the current pane.
unbind c
bind c new-window -c '#{pane_current_path}'
# Vim-like key bindings for pane navigation (default uses cursor keys).
unbind h
bind h select-pane -L
unbind j
bind j select-pane -D
unbind k
bind k select-pane -U
unbind l # normally used for last-window
bind l select-pane -R
# Move Panes
unbind L
bind L swap-pane -D
unbind H
bind H swap-pane -U
# Resizing (mouse also works).
unbind Left
bind -r Left resize-pane -L 5
unbind Right
bind -r Right resize-pane -R 5
unbind Down
bind -r Down resize-pane -D 5
unbind Up
bind -r Up resize-pane -U 5
# Fast toggle (normally prefix-l).
bind ^space last-window
# Intuitive window-splitting keys.
bind / split-window -h -c '#{pane_current_path}' # normally prefix-%
bind - split-window -v -c '#{pane_current_path}' # normally prefix-"
# Swap windows
bind-key -r "<" swap-window -t -1
bind-key -r ">" swap-window -t +1
# Smart pane switching with awareness of Vim splits
# See: https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind-key -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind-key -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind-key -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
bind-key -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
# Set 'C-Space + v' to enter copy-mode
unbind [
bind-key v copy-mode
# Set 'C-Space + C-v' to paste
unbind ]
bind-key C-v paste-buffer
# Setup 'v' to begin selection as in Vim and 'y' to yank
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
bind-key -T copy-mode-vi 'Escape' send -X cancel
bind-key -T copy-mode-vi 'C-v' send-keys -X rectangle-toggle
#+END_SRC
* Settings
#+BEGIN_SRC conf
# Activity monitoring
set -g visual-activity off
# Automatically renumber window numbers on closing a pane (tmux >= 1.7).
set -g renumber-windows on
# Mouse can be used to select panes, select windows (by clicking on the status bar), resize panes
set -g mouse on
set -g default-terminal "screen-256color"
set -ga terminal-overrides ',xterm-256color:Tc'
set -g history-limit 262144
# Start window and pane numbering at 1, (0 is too hard to reach)
set -g base-index 1
set -g pane-base-index 1
# Don't wait for an escape sequence after seeing C-a
set -s escape-time 0
# Dynamically update iTerm tab and window titles
set -g set-titles on
# Needed as on tmux 1.9 and up (defaults to off)
set -g focus-events on
# But don't change tmux's own window titles
set-option -g allow-rename off
# Don't wrap searches; it's super confusing given tmux's reverse-ordering of position info in copy mode
set -w -g wrap-search off
# Restore pre-2.1 behavior of scrolling with the scrollwheel in Vim, less, copy mode etc, otherwise entering copy mode if not already in it.
bind-key -T root WheelUpPane \
if-shell -Ft= '#{?pane_in_mode,1,#{mouse_any_flag}}' \
'send -Mt=' \
'if-shell -Ft= "#{alternate_on}" "send -t= Up" "copy-mode -et="'
bind-key -T root WheelDownPane \
if-shell -Ft = '#{?pane_in_mode,1,#{mouse_any_flag}}' \
'send -Mt=' \
'if-shell -Ft= "#{alternate_on}" "send -t= Down" "send -Mt="'
# Stay in copy mode on drag end, but otherwise exit for mouse up.
# Requires patch from https://github.com/tmux/tmux/issues/326
# unbind-key -t vi-copy MouseDragEnd1Pane
# bind-key -t vi-copy MouseUp1Pane cancel
bind-key -n MouseDrag1Status swap-window -t=
# bind-key -n MouseDown3Status new-window -a -t=
bind-key -n MouseDrag1Status swap-window -t=
# bind-key -n MouseDown3Status new-window -a -t=
# #T = standard window title (last command, see ~/.bash_profile)
# #h = short hostname
# #S = session name
# #W = tmux window name
set -g set-titles-string "#T : #h > #S > #W"
# Show bells in window titles
set -g window-status-bell-style fg=yellow,bold,underscore
#+END_SRC
* Plugins
** Install plugins
#+BEGIN_SRC conf
set -g @plugin 'tmux-plugins/tpm'
# set -g @plugin 'tmux-plugins/tmux-sessionist'
# set -g @plugin 'tmux-plugins/tmux-resurrect'
# set -g @plugin 'tmux-plugins/tmux-continuum'
# set -g @plugin 'tmux-plugins/tmux-battery'
set -g @plugin 'nhdaly/tmux-better-mouse-mode'
set -g @plugin 'seebi/tmux-colors-solarized'
#+END_SRC
** Configuration
#+BEGIN_SRC conf
# =============================================================
# tmux-resurrect
# =============================================================
# for vim
set -g @resurrect-strategy-vim 'session'
# for neovim
set -g @resurrect-strategy-nvim 'session'
# Restoring pane contents
set -g @resurrect-capture-pane-contents 'on'
run-shell ~/.tmux/plugins/tmux-resurrect/resurrect.tmux
# =============================================================
# =============================================================
# tmux-continuum
# =============================================================
set -g @continuum-boot 'on'
set -g @continuum-boot-options 'iterm,fullscreen'
set -g @continuum-save-interval '15'
run-shell ~/.tmux/plugins/tmux-continuum/continuum.tmux
# =============================================================
# =============================================================
# tmux-battery
# =============================================================
set -g @batt_charged_icon "="
set -g @batt_charging_icon "+"
set -g @batt_discharging_icon "-"
set -g @batt_attached_icon "o"
# =============================================================
#+END_SRC
* Colors
#+BEGIN_SRC conf
set -g @colors-solarized 'light'
#+END_SRC
* Initialize TMUX plugin manager
#+BEGIN_SRC conf
run '~/.tmux/plugins/tpm/tpm'
#+END_SRC

1389
dotfiles/vim.org Normal file

File diff suppressed because it is too large Load Diff

19
elisp/tangle.el Normal file
View File

@ -0,0 +1,19 @@
;;; tangle --- Tangle one or more org files
;;; Commentary:
;; This file can be used to tangle one or more files to their output
;; files.
;;; Code:
(require 'org)
(require 'ob-tangle)
(defun literate-dotfiles-tangle (&rest files)
"Tangle FILES or all files in the project."
(when (null files)
(setq files command-line-args-left))
(dolist (file files)
(with-current-buffer (find-file-noselect file)
(org-babel-tangle))))

117
install.org Normal file
View File

@ -0,0 +1,117 @@
#+TITLE: Installation
* Tmux
tmux - Terminal multiplexer
reattach-to-user-namespace - Reattach process (e.g., tmux) to background
* Git
bfg - Removes large or troublesome blobs like git-filter-branch does, but faster
* Text Editors
aspell - Spell checker with better logic than ispell
vim - Vi 'workalike' with many additional features
neovim - Ambitious Vim-fork focused on extensibility and agility
micro - Modern and intuitive terminal-based text editor
* LaTeX
* Mutt
neomutt - Teaching an Old Dog New Tricks
notmuch - Thread-based email index, search, and tagging
msmtp - SMTP client that can be used as an SMTP plugin for Mutt
isync - Synchronize a maildir with an IMAP server
vdirsyncer - Synchronize calendars and contacts
urlview - URL extractor/launcher
w3m - Pager/text based browser
abook - Address book with mutt support
elinks - Text mode web browser
lbdb - Little brother's database for the mutt mail reader
mu - Tool for searching e-mail messages stored in the maildir-format
contacts - Command-line tool to access macOS's Contacts (formerly 'Address Book')
ripmime - Extract attachments out of MIME encoded email packages
shared-mime-info - Database of common MIME types
* Micro controllers
avrdude - Atmel AVR MCU programmer
bootloadhid - USB boot loader for AVR microcontrollers
dfu-programmer - Device firmware update based USB programmer for Atmel chips
platformio - Ecosystem for IoT development (Arduino and ARM mbed compatible)
micropython - Python implementation for microcontrollers and constrained systems
arduino-mk - Makefile for Arduino sketches
* File Management
| =grep= | GNU grep, egrep and fgrep |
| =pdfgrep= | Search PDFs for strings matching a regular expression |
| =fzf= | Command-line fuzzy finder written in Go |
| =the_platinum_searcher= | Multi-platform code-search similar to ack and ag |
| =the_silver_searcher= | Code-search similar to ack |
| =fdupes= | Identify or delete duplicate files |
| =findutils= | Collection of GNU find, xargs, and locate |
| =ranger= | File browser |
| =vifm= | Ncurses based file manager with vi like keybindings |
| =tree= | Display directories as trees (with optional color/HTML output) |
| =launch= | Command-line launcher for macOS, in the spirit of 'open' |
| =p7zip= | 7-Zip (high compression file archiver) implementation |
| =unrar= | Extract, view, and test RAR archives |
| =atool= | script for managing file archives of various types |
* File Downloader
wget - Internet file retriever
you-get - Dumb downloader that scrapes the web
htop - Improved top (interactive process viewer)
httpie - User-friendly cURL replacement (command-line HTTP client)
curl - Get a file from an HTTP, HTTPS or FTP server
httpstat - curl statistics made simple
transmission - Lightweight BitTorrent client
aria2 - lightweight download utility
* Utils
binutils - GNU Binary Utilities
coreutils - GNU File, Shell, and Text utilities
gnome-doc-utils - Documentation utilities for the GNOME project
moreutils - Collection of tools that nobody wrote when UNIX was young
* A trier
| =asciinema= | Terminal session recorder |
| =automake= | tool for automatically generating Makefile |
| =cmake= | Cross-platform make |
| =cowsay= | Configurable talking characters in ASCII art |
| =cppcheck= | Static analysis of C and C++ code |
| =cputhrottle= | Limit the CPU usage of a process |
| =ctags= | Reimplementation of ctags |
| =gdb= | GNU debugger |
| =ghostscript= | Interpreter for PostScript and PDF |
| =go= | Open source programming language to build simple/reliable/efficient software |
| =hugo= | Configurable static site generator |
| =markdown= | Text-to-HTML conversion tool |
| =musikcube= | A cross-platform, terminal-based music player |
| =ncurses= | Text-based UI library |
| =openssl= | Cryptography and SSL/TLS Toolkit |
| =openvpn= | SSL/TLS VPN implementing OSI layer 2 or 3 secure network extension |
| =sdl= | Low-level access to audio, keyboard, mouse, joystick and graphics |
| =ssh= | copy-id - Add a public key to a remote machine's authorized_keys file |
| =terminal= | notifier - Send macOS User Notifications from the command-line |
| =texinfo= | Official documentation format of the GNU project |
| =weechat= | Extensible IRC client |
| =wego= | Weather app for the terminal |
| =wifi= | password - Show the current WiFi network password |
| =imagemagick= | Tools and libraries to manipulate images in many formats |
| =glances= | Alternative to top/htop |
| =pandoc= | Swiss-army knife of markup format conversion |
* Applications
| =airflow= | Watch local content on Apple TV and Chromecast |
| =angry-ip-scanner= | Fast and friendly network scanner |
| =arduino= | Arduino IDE |
| =font-hack-nerd-font= | Iconic font aggregator |
| =kap= | An open-source screen recorder built with web technology |
| =karabiner-elements= | powerful utility for keyboard customization on macOS |
| =launchcontrol= | Create, manage and debug launchd(8) services |
| =mactex= | The MacTeX Distribution |
| =nmap= | the Network Mapper - Free Security Scanner |
| =numi= | Beautiful calculator app for Mac |
| =virtualbox= | VirtualBox |
| =vlc= | the best Open Source player |
| =castnow= | Commandline chromecast player |
| =fast-cli= | Test your download speed using fast.com |
| =neovim= | Neovim client API and neovim remote plugin provider |
| =wunderline= | Wunderlist for your command line |

33
makefiles/mf_latex Normal file
View File

@ -0,0 +1,33 @@
# File adapted from this stackoverflow question: https://tex.stackexchange.com/questions/40738/how-to-properly-make-a-latex-project
# The first rule in a Makefile is the one executed by default ("make"). It
# should always be the "all" rule, so that "make" and "make all" are identical.
all: main.pdf
# MAIN LATEXMK RULE
# -pdf tells latexmk to generate a PDF instead of DVI.
# -pdflatex="" tells latexmk to call a specific backend with specific options.
# -use-make tells latexmk to call make for generating missing files.
# -interaction=nonstopmode keeps the pdflatex backend from stopping at a
# missing file reference and interactively asking you for an alternative.
# -synctex=1 is required to jump between the source PDF and the text editor.
# -pvc (preview continuously) watches the directory for changes.
# -quiet suppresses most status messages (https://tex.stackexchange.com/questions/40783/can-i-make-latexmk-quieter).
main.pdf: main.tex
latexmk -quiet -bibtex $(PREVIEW_CONTINUOUSLY) -f -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode" -use-make main.tex
# The .PHONY rule keeps make from processing a file named "watch" or "clean".
.PHONY: watch
# Set the PREVIEW_CONTINUOUSLY variable to -pvc to switch latexmk into the preview continuously mode
watch: PREVIEW_CONTINUOUSLY=-pvc
watch: main.pdf
.PHONY: clean
# -bibtex also removes the .bbl files (http://tex.stackexchange.com/a/83384/79184).
clean:
latexmk -CA -bibtex
open:
open main.pdf

5782
readme.html Normal file

File diff suppressed because it is too large Load Diff

1933
readme.org Normal file

File diff suppressed because it is too large Load Diff