From a1339e9d0ab7fbd1ab852147e708ba9a67ac871e Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Sun, 3 Jan 2021 22:52:53 +0100 Subject: [PATCH] Nicer home page --- bash.org | 26 +- config.org | 2 +- docs/bash.html | 352 ++-- docs/config.html | 198 +- docs/dist/style.css | 2 +- docs/doom.html | 4404 +++++++++++++++++++-------------------- docs/index.html | 141 +- docs/install.html | 3418 +++++++++++------------------- docs/music.html | 240 +-- docs/notifications.html | 3857 +++++++++++++++++----------------- docs/pcmanfm.html | 56 +- docs/qutebrowser.html | 656 +++--- docs/ranger.html | 676 +++--- docs/rofi.html | 285 ++- docs/windows.html | 110 +- doom.org | 20 +- index.org | 67 +- install.org | 985 ++++----- music.org | 2 +- notifications.org | 1 + pcmanfm.org | 2 +- qutebrowser.org | 2 +- ranger.org | 2 +- rofi.org | 205 +- windows.org | 53 +- 25 files changed, 7377 insertions(+), 8385 deletions(-) diff --git a/bash.org b/bash.org index 819e9bc..afe9dbd 100644 --- a/bash.org +++ b/bash.org @@ -48,6 +48,10 @@ # Line wrap on window resize shopt -s checkwinsize + # Enable history expansion with space + # E.g. typing !! will replace the !! with your last command + bind Space:magic-space + # Expand Aliases shopt -s expand_aliases @@ -56,6 +60,9 @@ # Enable history appending instead of overwriting shopt -s histappend + + # Save multi-line commands as one command + shopt -s cmdhist #+END_SRC ** Prompt - =PS1= @@ -204,9 +211,20 @@ https://doronbehar.com/articles/using-kdeconnect-to-comfortably-send-sms-message Undocumented feature which sets the size to "unlimited". http://stackoverflow.com/questions/9457233/unlimited-bash-history #+BEGIN_SRC bash - export HISTFILESIZE= - export HISTSIZE= - export HISTTIMEFORMAT="[%F %T] " + # Huge history. Doesn't appear to slow things down, so why not? + HISTSIZE=500000 + HISTFILESIZE=100000 + + # Avoid duplicate entries + HISTCONTROL="erasedups:ignoreboth" + + # Don't record some commands + export HISTIGNORE="&:[ ]*:exit:ls:bg:fg:history:clear" + + # Use standard ISO 8601 timestamp + # %F equivalent to %Y-%m-%d + # %T equivalent to %H:%M:%S (24-hours format) + 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 @@ -312,7 +330,7 @@ This is important for termite to work when sshing in remote machines. PATH=$HOME/appimages:$PATH PATH=$HOME/.gem/ruby/2.5.0/bin:$PATH PATH=$GOPATH:$GOPATH/bin:$PATH - PATH=~/.emacs.d/bin:$PATH + PATH=~/.config/emacs/bin:$PATH export PATH #+END_SRC diff --git a/config.org b/config.org index e1b738f..7e02d0d 100644 --- a/config.org +++ b/config.org @@ -66,7 +66,7 @@ monospace - SauceCodePro Nerd Font Mono + Hack Nerd Font Mono diff --git a/docs/bash.html b/docs/bash.html index aa438bf..ba6b0c9 100644 --- a/docs/bash.html +++ b/docs/bash.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Bash Configuration @@ -90,7 +90,7 @@

If not running interactively, don’t do anything

-
[[ $- != *i* ]] && return
+
  [[ $- != *i* ]] && return
 
@@ -100,7 +100,7 @@

Bash Completion

-
[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion
+
  [ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion
 
@@ -110,7 +110,7 @@

FZF

-
source /usr/share/fzf/key-bindings.bash
+
  source /usr/share/fzf/key-bindings.bash
 
@@ -120,8 +120,8 @@

Ignore case for auto-completion

-
bind "set completion-ignore-case on"
-bind "set show-all-if-ambiguous on"
+
  bind "set completion-ignore-case on"
+  bind "set show-all-if-ambiguous on"
 
@@ -131,7 +131,7 @@

Use Color

-
use_color=true
+
  use_color=true
 
@@ -141,26 +141,33 @@

Some config

-
# Unset some variables
-unset use_color safe_term match_lhs sh
+
  # Unset some variables
+  unset use_color safe_term match_lhs sh
 
-# Allow local processes with root privileges to connect to the locally running X server
-xhost +local:root > /dev/null 2>&1
+  # Allow local processes with root privileges to connect to the locally running X server
+  xhost +local:root > /dev/null 2>&1
 
-# Autocomplete sudo commands
-complete -cf sudo
+  # Autocomplete sudo commands
+  complete -cf sudo
 
-# Line wrap on window resize
-shopt -s checkwinsize
+  # Line wrap on window resize
+  shopt -s checkwinsize
 
-# Expand Aliases
-shopt -s expand_aliases
+  # Enable history expansion with space
+  # E.g. typing !!<space> will replace the !! with your last command
+  bind Space:magic-space
 
-# Auto "cd" when entering just a path
-shopt -s autocd
+  # Expand Aliases
+  shopt -s expand_aliases
 
-# Enable history appending instead of overwriting
-shopt -s histappend
+  # Auto "cd" when entering just a path
+  shopt -s autocd
+
+  # Enable history appending instead of overwriting
+  shopt -s histappend
+
+  # Save multi-line commands as one command
+  shopt -s cmdhist
 
@@ -170,7 +177,7 @@ xhost +local:root > /dev/null 2Prompt - PS1
-
export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][\[$(tput setaf 3)\]\u\[$(tput setaf 2)\]@\[$(tput setaf 4)\]\h \[$(tput setaf 5)\]\W\[$(tput setaf 1)\]]\[$(tput setaf 7)\]\\$ \[$(tput sgr0)\]"
+
  export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][\[$(tput setaf 3)\]\u\[$(tput setaf 2)\]@\[$(tput setaf 4)\]\h \[$(tput setaf 5)\]\W\[$(tput setaf 1)\]]\[$(tput setaf 7)\]\\$ \[$(tput sgr0)\]"
 
@@ -180,8 +187,8 @@ xhost +local:root > /dev/null 2Rebind up and down arrow keys to search through bash history
-
bind '"\e[A": history-search-backward'
-bind '"\e[B": history-search-forward'
+
  bind '"\e[A": history-search-backward'
+  bind '"\e[B": history-search-forward'
 
@@ -195,13 +202,13 @@ xhost +local:root > /dev/null 2Better defaults for some commands
-
alias ls='ls -hN --color=auto --group-directories-first'
-alias grep='grep --colour=auto'
-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"
-alias tmux='tmux -f $XDG_CONFIG_HOME/tmux/tmux.conf'
+
  alias ls='ls -hN --color=auto --group-directories-first'
+  alias grep='grep --colour=auto'
+  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"
+  alias tmux='tmux -f $XDG_CONFIG_HOME/tmux/tmux.conf'
 
@@ -211,13 +218,13 @@ xhost +local:root > /dev/null 2One letter aliases
-
alias r="ranger"
-alias t="tmux"
-alias v="nvim"
-alias sv='sudo -E nvim'
-alias g="git"
-alias m="neomutt"
-alias o="xdg-open"
+
  alias r="ranger"
+  alias t="tmux"
+  alias v="nvim"
+  alias sv='sudo -E nvim'
+  alias g="git"
+  alias m="neomutt"
+  alias o="xdg-open"
 
@@ -227,7 +234,7 @@ xhost +local:root > /dev/null 2Neovim
-
command -v nvim >/dev/null && alias vim="nvim" vimdiff="nvim -d" # Use neovim for vim if present.
+
  command -v nvim >/dev/null && alias vim="nvim" vimdiff="nvim -d" # Use neovim for vim if present.
 
@@ -237,8 +244,8 @@ xhost +local:root > /dev/null 2Vim-like
-
alias :q=exit
-alias :e=nvim
+
  alias :q=exit
+  alias :e=nvim
 
@@ -248,7 +255,7 @@ xhost +local:root > /dev/null 2Print each PATH entry on a separate line
-
alias path='echo -e ${PATH//:/\\n}'
+
  alias path='echo -e ${PATH//:/\\n}'
 
@@ -263,32 +270,32 @@ xhost +local:root > /dev/null 2colors - Display colors
-
colors() {
-    local fgc bgc vals seq0
+
  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"
+      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
+      # 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%%;}
+              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
-}
+              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
+  }
 
@@ -305,9 +312,9 @@ small enough for one screen.

-
function tre() {
-    tree -aC -I '.git|node_modules|bower_components' --dirsfirst "$@" | less -FRNX;
-}
+
  function tre() {
+      tree -aC -I '.git|node_modules|bower_components' --dirsfirst "$@" | less -FRNX;
+  }
 
@@ -317,9 +324,9 @@ small enough for one screen.

mkd - Create a new directory and enter it

-
function mkd() {
-    mkdir -p "$@" && cd "$_";
-}
+
  function mkd() {
+      mkdir -p "$@" && cd "$_";
+  }
 
@@ -329,18 +336,18 @@ small enough for one screen.

fs - Filesize of directory

-
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;
-}
+
  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;
+  }
 
@@ -350,9 +357,9 @@ small enough for one screen.

nullify - Redirect both standard output and standard error, as well as sending to background

-
function nullify() {
-    "$@" >/dev/null 2>&1
-}
+
  function nullify() {
+      "$@" >/dev/null 2>&1
+  }
 
@@ -366,18 +373,18 @@ small enough for one screen.

-
sms(){
-    local args="$@"
-    # local phone_number name phone_type
-    # khard phone --parsable | sort -u | fzf | IFS=$'\t' read -r phone_number name phone_type
-    local phone_number=$(khard phone --parsable | sort -u | fzf | cut -f1 -d$'\t')
-    if [[ -z "${phone_number}" ]]; then
-        echo No recipient was chosen >&2
-        return
-    else
-        kdeconnect-cli --send-sms "${args}" --destination "${phone_number}" --device 4de3b5de2264a17c
-    fi
-}
+
  sms(){
+      local args="$@"
+      # local phone_number name phone_type
+      # khard phone --parsable | sort -u | fzf | IFS=$'\t' read -r phone_number name phone_type
+      local phone_number=$(khard phone --parsable | sort -u | fzf | cut -f1 -d$'\t')
+      if [[ -z "${phone_number}" ]]; then
+          echo No recipient was chosen >&2
+          return
+      else
+          kdeconnect-cli --send-sms "${args}" --destination "${phone_number}" --device 4de3b5de2264a17c
+      fi
+  }
 
 
@@ -393,9 +400,20 @@ Undocumented feature which sets the size to “unlimited”. -
export HISTFILESIZE=
-export HISTSIZE=
-export HISTTIMEFORMAT="[%F %T] "
+
  # Huge history. Doesn't appear to slow things down, so why not?
+  HISTSIZE=500000
+  HISTFILESIZE=100000
+
+  # Avoid duplicate entries
+  HISTCONTROL="erasedups:ignoreboth"
+
+  # Don't record some commands
+  export HISTIGNORE="&:[ ]*:exit:ls:bg:fg:history:clear"
+
+  # Use standard ISO 8601 timestamp
+  # %F equivalent to %Y-%m-%d
+  # %T equivalent to %H:%M:%S (24-hours format)
+  HISTTIMEFORMAT='%F %T '
 
@@ -404,7 +422,7 @@ Change the file location because certain bash sessions truncate .bash_hist

-
export HISTFILE=~/.bash_eternal_history
+
  export HISTFILE=~/.bash_eternal_history
 
@@ -413,7 +431,7 @@ Force prompt to write history after every command.
-
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
+
  PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
 
@@ -424,8 +442,8 @@ Force prompt to write history after every command.
~/.bash_profile
-
[[ -f ~/.profile ]] && . ~/.profile
-[[ -f ~/.bashrc ]] && . ~/.bashrc
+
  [[ -f ~/.profile ]] && . ~/.profile
+  [[ -f ~/.bashrc ]] && . ~/.bashrc
 
@@ -440,8 +458,8 @@ Force prompt to write history after every command.
QT And GTK Themes
-
export QT_QPA_PLATFORMTHEME="qt5ct"
-export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
+
  export QT_QPA_PLATFORMTHEME="qt5ct"
+  export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
 
@@ -451,7 +469,7 @@ Force prompt to write history after every command.
Gui program to ask for sudo password
-
export SUDO_ASKPASS=~/.local/bin/askpass-rofi
+
  export SUDO_ASKPASS=~/.local/bin/askpass-rofi
 
@@ -464,10 +482,10 @@ Force prompt to write history after every command.
-
if [ -n "$DESKTOP_SESSION" ];then
-    eval $(gnome-keyring-daemon --start)
-    export SSH_AUTH_SOCK
-fi
+
  if [ -n "$DESKTOP_SESSION" ];then
+      eval $(gnome-keyring-daemon --start)
+      export SSH_AUTH_SOCK
+  fi
 
@@ -477,11 +495,11 @@ Enable the keyring for applications run through the terminal

Export some default applications

-
export EDITOR="nvim"
-export TERMINAL="termite"
-export BROWSER="qutebrowser"
-export READER="zathura"
-export FILE="ranger"
+
  export EDITOR="nvim"
+  export TERMINAL="termite"
+  export BROWSER="qutebrowser"
+  export READER="zathura"
+  export FILE="ranger"
 
@@ -498,7 +516,7 @@ Enable the keyring for applications run through the terminal This is important for termite to work when sshing in remote machines.

-
export TERM=xterm-color
+
  export TERM=xterm-color
 
@@ -508,7 +526,7 @@ This is important for termite to work when sshing in remote machines.

XDG Default

-
export XDG_CONFIG_HOME="$HOME/.config"
+
  export XDG_CONFIG_HOME="$HOME/.config"
 
@@ -518,8 +536,8 @@ This is important for termite to work when sshing in remote machines.

Use Ripgrep for FZF

-
export FZF_DEFAULT_COMMAND='rg --files --no-ignore --hidden --follow --glob "!.git/*"'
-export FZF_DEFAULT_OPTS='--layout=reverse --height=20'
+
  export FZF_DEFAULT_COMMAND='rg --files --no-ignore --hidden --follow --glob "!.git/*"'
+  export FZF_DEFAULT_OPTS='--layout=reverse --height=20'
 
@@ -529,7 +547,7 @@ This is important for termite to work when sshing in remote machines.

Goland

-
export GOPATH=$HOME/go
+
  export GOPATH=$HOME/go
 
@@ -539,7 +557,7 @@ This is important for termite to work when sshing in remote machines.

Latex Path

-
export TEXMFHOME=$HOME/.local/share/texmf
+
  export TEXMFHOME=$HOME/.local/share/texmf
 
@@ -549,7 +567,7 @@ This is important for termite to work when sshing in remote machines.

Bitwarden Session

-
export BW_SESSION="HH0yycfocRSuGtq/iW1e6v13PQ1sShMXbMhdb/En94S6OcIXFnJlLEyU+dySsmf2YShY4CImoB5FrxgdPsY9Qw=="
+
  export BW_SESSION="HH0yycfocRSuGtq/iW1e6v13PQ1sShMXbMhdb/En94S6OcIXFnJlLEyU+dySsmf2YShY4CImoB5FrxgdPsY9Qw=="
 
@@ -559,7 +577,7 @@ This is important for termite to work when sshing in remote machines.

Python Path

-
export PYTHONPATH="${PYTHONPATH}:/usr/lib/python3.9/site-packages/configobj"
+
  export PYTHONPATH="${PYTHONPATH}:/usr/lib/python3.9/site-packages/configobj"
 
@@ -570,11 +588,11 @@ This is important for termite to work when sshing in remote machines.

Path

-
PATH=$HOME/appimages:$PATH
-PATH=$HOME/.gem/ruby/2.5.0/bin:$PATH
-PATH=$GOPATH:$GOPATH/bin:$PATH
-PATH=~/.emacs.d/bin:$PATH
-export PATH
+
  PATH=$HOME/appimages:$PATH
+  PATH=$HOME/.gem/ruby/2.5.0/bin:$PATH
+  PATH=$GOPATH:$GOPATH/bin:$PATH
+  PATH=~/.config/emacs/bin:$PATH
+  export PATH
 
@@ -584,9 +602,9 @@ This is important for termite to work when sshing in remote machines.

Automatically run startx

-
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
-    exec startx
-fi
+
  if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
+      exec startx
+  fi
 
@@ -600,11 +618,11 @@ This is important for termite to work when sshing in remote machines. Completion:

-
# Single tab for autocompletion
-set show-all-if-ambiguous on
+
  # Single tab for autocompletion
+  set show-all-if-ambiguous on
 
-# Ignore case for completion
-set completion-ignore-case on
+  # Ignore case for completion
+  set completion-ignore-case on
 
@@ -612,15 +630,15 @@ set completion-ignore-case on vi mode:

-
# VI mode (works in bash and zsh)
-set editing-mode vi
+
  # VI mode (works in bash and zsh)
+  set editing-mode vi
 
-# Show which mode (normal or insert)
-set show-mode-in-prompt on
+  # Show which mode (normal or insert)
+  set show-mode-in-prompt on
 
-# Show the mode by changing the cursor
-set vi-ins-mode-string \1\e[6 q\2
-set vi-cmd-mode-string \1\e[2 q\2
+  # Show the mode by changing the cursor
+  set vi-ins-mode-string \1\e[6 q\2
+  set vi-cmd-mode-string \1\e[2 q\2
 
@@ -628,19 +646,19 @@ set vi-cmd-mode-string \1\e[
-
set keymap vi-command
-# these are for vi-command mode
-Control-l: clear-screen
-Control-a: beginning-of-line
-Control-e: end-of-line
-Control-w: "\C-aisudo \C-e"
+
  set keymap vi-command
+  # these are for vi-command mode
+  Control-l: clear-screen
+  Control-a: beginning-of-line
+  Control-e: end-of-line
+  Control-w: "\C-aisudo \C-e"
 
-set keymap vi-insert
-# these are for vi-insert mode
-Control-l: clear-screen
-Control-a: beginning-of-line
-Control-e: end-of-line
-Control-w: "\C-asudo \C-e"
+  set keymap vi-insert
+  # these are for vi-insert mode
+  Control-l: clear-screen
+  Control-a: beginning-of-line
+  Control-e: end-of-line
+  Control-w: "\C-asudo \C-e"
 
@@ -648,16 +666,16 @@ Control-w: "\C-asudo \C-e" Colorized completion

-
# Color files by types
-set colored-stats On
-# Append char to indicate type
-set visible-stats On
-# Mark symlinked directories
-set mark-symlinked-directories On
-# Color the common prefix
-set colored-completion-prefix On
-# Color the common prefix in menu-complete
-set menu-complete-display-prefix On
+
  # Color files by types
+  set colored-stats On
+  # Append char to indicate type
+  set visible-stats On
+  # Mark symlinked directories
+  set mark-symlinked-directories On
+  # Color the common prefix
+  set colored-completion-prefix On
+  # Color the common prefix in menu-complete
+  set menu-complete-display-prefix On
 
@@ -665,7 +683,7 @@ set menu-complete-display-prefix On Don’t echo ^C after Ctrl+C is pressed.

-
set echo-control-characters off
+
  set echo-control-characters off
 
@@ -673,7 +691,7 @@ Don’t echo ^C after Ctrl+C is pressed.

Author: Dehaeze Thomas

-

Created: 2021-01-01 ven. 20:09

+

Created: 2021-01-03 dim. 22:19

diff --git a/docs/config.html b/docs/config.html index 7a3ef22..89bc26e 100644 --- a/docs/config.html +++ b/docs/config.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Configuration Files @@ -37,37 +37,37 @@

SSH

-
AddKeysToAgent  yes
+
  AddKeysToAgent  yes
 
-Host grenoble
-    hostname ***REMOVED***
-    Port 10022
-    user tdehaeze
-    IdentityFile ~/.ssh/id_rsa
+  Host grenoble
+      hostname ***REMOVED***
+      Port 10022
+      user tdehaeze
+      IdentityFile ~/.ssh/id_rsa
 
-Host wingaudio
-    hostname 207.154.251.241
-    Port 22
-    user tdehaeze
-    IdentityFile ~/.ssh/id_rsa
+  Host wingaudio
+      hostname 207.154.251.241
+      Port 22
+      user tdehaeze
+      IdentityFile ~/.ssh/id_rsa
 
-Host octoprint
-    hostname 192.168.1.56
-    Port 22
-    user pi
-    IdentityFile ~/.ssh/id_rsa
+  Host octoprint
+      hostname 192.168.1.56
+      Port 22
+      user pi
+      IdentityFile ~/.ssh/id_rsa
 
-Host hassio
-    hostname 192.168.1.101
-    Port 10022
-    user root
-    IdentityFile ~/.ssh/id_rsa
+  Host hassio
+      hostname 192.168.1.101
+      Port 10022
+      user root
+      IdentityFile ~/.ssh/id_rsa
 
-Host nas
-    hostname 192.168.1.50
-    Port 10022
-    user tdehaeze
-    IdentityFile ~/.ssh/id_rsa
+  Host nas
+      hostname 192.168.1.50
+      Port 10022
+      user tdehaeze
+      IdentityFile ~/.ssh/id_rsa
 
@@ -77,28 +77,28 @@ Host nas

Font

-
<?xml version='1.0'?>
-<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
-<fontconfig>
+
  <?xml version='1.0'?>
+  <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+  <fontconfig>
 
-<alias>
-    <family>serif</family>
-    <prefer><family>Linux Libertine</family></prefer>
-  </alias>
   <alias>
-    <family>sans-serif</family>
-    <prefer><family>Linux Biolinum</family></prefer>
-  </alias>
-  <alias>
-    <family>sans</family>
-    <prefer><family>Linux Biolinum</family></prefer>
-  </alias>
-  <alias>
-    <family>monospace</family>
-    <prefer><family>SauceCodePro Nerd Font Mono</family></prefer>
-  </alias>
+      <family>serif</family>
+      <prefer><family>Linux Libertine</family></prefer>
+    </alias>
+    <alias>
+      <family>sans-serif</family>
+      <prefer><family>Linux Biolinum</family></prefer>
+    </alias>
+    <alias>
+      <family>sans</family>
+      <prefer><family>Linux Biolinum</family></prefer>
+    </alias>
+    <alias>
+      <family>monospace</family>
+      <prefer><family>Hack Nerd Font Mono</family></prefer>
+    </alias>
 
-</fontconfig>
+  </fontconfig>
 
@@ -108,8 +108,8 @@ Host nas

GnuPG

-
default-cache-ttl 60480000
-max-cache-ttl 60480000
+
  default-cache-ttl 60480000
+  max-cache-ttl 60480000
 
@@ -119,22 +119,22 @@ max-cache-ttl 60480000

Redshift

-
[redshift]
-temp-day=5700
-temp-night=3500
+
  [redshift]
+  temp-day=5700
+  temp-night=3500
 
-transition=1
+  transition=1
 
-;brightness-day=0.7
-;brightness-night=0.4
+  ;brightness-day=0.7
+  ;brightness-night=0.4
 
-location-provider=manual
+  location-provider=manual
 
-adjustment-method=randr
+  adjustment-method=randr
 
-[manual]
-lat=45.1
-lon=5.7
+  [manual]
+  lat=45.1
+  lon=5.7
 
@@ -144,26 +144,26 @@ max-cache-ttl 60480000

dmenu

-
# define the font for dmenu to be used
-DMENU_FN="Hack Nerd Font 12"
+
  # define the font for dmenu to be used
+  DMENU_FN="Hack Nerd Font 12"
 
-# background colour for unselected menu-items
-DMENU_NB="#222D31"
+  # background colour for unselected menu-items
+  DMENU_NB="#222D31"
 
-# textcolour for unselected menu-items
-DMENU_NF="#F9FAF9"
+  # textcolour for unselected menu-items
+  DMENU_NF="#F9FAF9"
 
-# background colour for selected menu-items
-DMENU_SB="#16A085"
+  # background colour for selected menu-items
+  DMENU_SB="#16A085"
 
-# textcolour for selected menu-items
-DMENU_SF="#F9FAF9"
+  # textcolour for selected menu-items
+  DMENU_SF="#F9FAF9"
 
-# command for the terminal application to be used:
-TERMINAL_CMD="terminal -e"
+  # command for the terminal application to be used:
+  TERMINAL_CMD="terminal -e"
 
-# export our variables
-DMENU_OPTIONS="-fn $DMENU_FN -nb $DMENU_NB -nf $DMENU_NF -sf $DMENU_SF -sb $DMENU_SB"
+  # export our variables
+  DMENU_OPTIONS="-fn $DMENU_FN -nb $DMENU_NB -nf $DMENU_NF -sf $DMENU_SF -sb $DMENU_SB"
 
@@ -173,20 +173,20 @@ max-cache-ttl 60480000

Locale

-
LANG=en_US.UTF-8
-LC_CTYPE="en_US.UTF-8"
-LC_NUMERIC=fr_FR.UTF-8
-LC_TIME=fr_FR.UTF-8
-LC_COLLATE="en_US.UTF-8"
-LC_MONETARY=fr_FR.UTF-8
-LC_MESSAGES="en_US.UTF-8"
-LC_PAPER=fr_FR.UTF-8
-LC_NAME=fr_FR.UTF-8
-LC_ADDRESS=fr_FR.UTF-8
-LC_TELEPHONE=fr_FR.UTF-8
-LC_MEASUREMENT=fr_FR.UTF-8
-LC_IDENTIFICATION=fr_FR.UTF-8
-LC_ALL=
+
  LANG=en_US.UTF-8
+  LC_CTYPE="en_US.UTF-8"
+  LC_NUMERIC=fr_FR.UTF-8
+  LC_TIME=fr_FR.UTF-8
+  LC_COLLATE="en_US.UTF-8"
+  LC_MONETARY=fr_FR.UTF-8
+  LC_MESSAGES="en_US.UTF-8"
+  LC_PAPER=fr_FR.UTF-8
+  LC_NAME=fr_FR.UTF-8
+  LC_ADDRESS=fr_FR.UTF-8
+  LC_TELEPHONE=fr_FR.UTF-8
+  LC_MEASUREMENT=fr_FR.UTF-8
+  LC_IDENTIFICATION=fr_FR.UTF-8
+  LC_ALL=
 
@@ -196,9 +196,9 @@ max-cache-ttl 60480000

bukurun Rofi Frontend for Buku (Bookmark Manager)

-
_rofi () {
-    rofi -dmenu -i -no-levenshtein-sort -width 1000 "$@"
-}
+
  _rofi () {
+      rofi -dmenu -i -no-levenshtein-sort -width 1000 "$@"
+  }
 
@@ -206,8 +206,8 @@ max-cache-ttl 60480000 Display settings

-
display_type=1
-max_str_width=80
+
  display_type=1
+  max_str_width=80
 
@@ -215,11 +215,11 @@ Display settings Keybindings

-
switch_view="Alt+Tab"
-new_bookmark="Alt+n"
-actions="Alt+a"
-edit="Alt+e"
-delete="Alt+d"
+
  switch_view="Alt+Tab"
+  new_bookmark="Alt+n"
+  actions="Alt+a"
+  edit="Alt+e"
+  delete="Alt+d"
 
@@ -227,7 +227,7 @@ Keybindings Colors

-
help_color="#2d7ed8"
+
  help_color="#2d7ed8"
 
@@ -235,7 +235,7 @@ Colors

Author: Dehaeze Thomas

-

Created: 2021-01-01 ven. 20:09

+

Created: 2021-01-03 dim. 22:25

diff --git a/docs/dist/style.css b/docs/dist/style.css index 67cd6aa..d40eb3d 100644 --- a/docs/dist/style.css +++ b/docs/dist/style.css @@ -1 +1 @@ -@import url("https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap");@import url("https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap");@import url("https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap");@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/fontawesome.min.css");html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:1rem;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}*{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}blockquote,q{quotes:none}blockquote:before,blockquote:after{content:'';content:none}q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}@use "sass:color";html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:16px;height:100%;overflow-x:hidden}body{background:#edf0f2;color:#404040;font-family:Roboto,sans-serif,FontAwesome;font-weight:400;margin:0;min-height:100%;overflow-x:hidden}#content{background:#fcfcfc;height:100%;min-height:100%;margin-left:300px;max-width:1200px;padding:1.618em 3.236em}a{color:#6b7adb;text-decoration:none;cursor:pointer}a:hover{outline:0;color:#6b7adb}a:visited{outline:0;color:#6b7adb}p{font-size:1rem;line-height:24px;margin:0 0 1.5em 0}b,strong{font-weight:700}i{font-style:italic}.underline{text-decoration:underline}code{background:#fff;border:solid 1px #e1e4e5;font-family:"Source Code Pro",monospace;font-size:0.75rem;max-width:100%;overflow-x:auto;padding:0 5px;white-space:nowrap}blockquote{background-color:#f0f0f0;border-left:5px solid #a3a3a3;font-style:italic;line-height:24px;margin:0px 0px 24px 0px;padding:6px 20px}blockquote>p{margin-bottom:1em}blockquote>p:last-child{margin-bottom:0}sub,sup{font-size:0.6rem;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}mark{background:#ff0;color:#000;font-style:italic;font-weight:700}small{font-size:0.85rem}img{-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}label{cursor:pointer;display:block;margin:0 0 0.3125em 0;color:#333;font-size:0.9rem}legend{border:0;margin-left:-7px;padding:0;white-space:normal;display:block;width:100%;padding:0;white-space:normal;margin-bottom:24px;font-size:1.5rem}.nav #content .admonition-title,#content .nav .admonition-title,.nav .icon{display:inline}.left{text-align:left}.center{text-align:center}.right{text-align:right}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}#content img{max-width:100%}#content .section>img,#content .section>a>img{margin-bottom:24px}.verse{border-left:5px solid #6AB0DE;background-color:#E7F2FA;padding:6px 20px;font-style:italic}#content .section ol p,#content .section ul p{margin-bottom:12px}#content h1 .headerlink,#content h2 .headerlink,#content h3 .headerlink,#content h4 .headerlink,#content h5 .headerlink,#content h6 .headerlink,#content dl dt .headerlink{display:none;visibility:hidden;font-size:14px}#content h1 .headerlink:after,#content h2 .headerlink:after,#content h3 .headerlink:after,#content h4 .headerlink:after,#content h5 .headerlink:after,#content h6 .headerlink:after,#content dl dt .headerlink:after{visibility:visible;content:"";font-family:FontAwesome;font-weight:900;display:inline-block}#content h1:hover .headerlink,#content h2:hover .headerlink,#content h3:hover .headerlink,#content h4:hover .headerlink,#content h5:hover .headerlink,#content h6:hover .headerlink,#content dl dt:hover .headerlink{display:inline-block}#content .highlighted{background:#F1C40F;display:inline-block;font-weight:700;padding:0 6px}#content .footnote-reference,#content .citation-reference{vertical-align:super;font-size:0.9rem}span[id*='MathJax-Span']{color:#404040}.math{text-align:center}.fa:before,#content h1 .headerlink:before,#content h2 .headerlink:before,#content h3 .headerlink:before,#content h4 .headerlink:before,#content h5 .headerlink:before,#content h6 .headerlink:before,#content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,#table-of-contents li.on a,#table-of-contents li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.fa,.icon{display:inline-block;font-family:FontAwesome;font-style:normal;font-style:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.figure.wrap-right{float:right}.figure.wrap-right:after{content:'';display:block;clear:both}.figure.wrap-left{float:left}.figure.wrap-left:after{content:'';display:block;clear:both}@-webkit-keyframes target{from{background:#ffffff}50%{background:#ffffd3}to{background:#ffffff}}:target{-webkit-animation:target .5s linear}.todo{background-color:#db6b6b;padding:0px 4px;color:#fff}.todo.WAIT{background-color:#dba76b}.done{background-color:#6bdbb6;padding:0px 4px;color:#fff}.priority{color:#eea859;font-family:"Source Code Pro",monospace}.tag span{background-color:#f0f0f0;border:1px solid #a3a3a3;color:#939393;cursor:pointer;display:block;float:right;font-size:0.7rem;font-weight:400;margin:0 3px;padding:5px;border-radius:3px}.timestamp-wrapper{font-size:0.8rem;margin-left:2em}.timestamp-wrapper .timestamp{color:#22308c;font-family:"Source Code Pro",monospace}.title{font-size:1.75rem;margin-bottom:1em;font-weight:700;text-align:center}.title .subtitle{font-size:0.8rem}h1,h2,h3,h4,h5,h6{font-family:Roboto,sans-serif,FontAwesome}h1{font-size:1.75rem;margin-bottom:1em;font-weight:700;text-align:center}h2{clear:both;font-size:1.5rem;margin-bottom:1em;font-weight:700}h3{clear:both;font-size:1.25rem;margin-bottom:0.5em}h4{font-size:1.15rem;margin-bottom:0.5em;color:#2980B9;font-weight:300}h5{font-size:1.1rem;margin-bottom:0.5em;color:#2980B9;font-weight:light}#org-div-home-and-up{position:absolute;right:0;z-index:100;padding:10px}@media all and (min-width: 1500px){#org-div-home-and-up{right:auto;width:1500px;text-align:right}}@media (max-width: 768px){#org-div-home-and-up{position:fixed;padding:1em;color:#2c3eb5}#org-div-home-and-up a{color:#fcfcfc}}#table-of-contents{position:fixed;top:0;left:0;width:300px;overflow-x:hidden;overflow-y:scroll;height:100%;background:#333;z-index:200}#table-of-contents h2{color:#fcfcfc;background-color:#6b7adb;text-align:center;padding:1em;display:block;font-size:1rem;z-index:200}#table-of-contents a{display:block;position:relative;line-height:1.5em;font-size:0.9rem;color:#a6a6a6}#table-of-contents a:hover{background-color:#666;cursor:pointer}#table-of-contents .close-sidebar{display:none}#table-of-contents li{list-style:none;margin-left:0px}#table-of-contents ul{margin-bottom:0}#table-of-contents li a{padding:0.4em 1.6em}#table-of-contents li ul li a{padding:0.4em 2.4em}#table-of-contents li ul li ul li a{padding:0.4em 3.0em}#table-of-contents li ul li ul li ul li a{padding:0.4em 3.6em}#table-of-contents .tag{display:none}@media (max-width: 768px){#table-of-contents{display:none;width:60%;box-shadow:-25px 0px 10px 32px #000}#table-of-contents:target{display:block}#table-of-contents .close-sidebar{color:#fcfcfc;display:block;margin-left:10px;float:right}#table-of-contents .close-sidebar:hover{background-color:#6b7adb}}ul.nav li ul li{display:none}ul.nav li ul li ul li{display:none}ul.nav li.active ul li{display:inline}ul.nav li.active ul li ul li{display:inline}ul.nav li.active ul li a{background-color:#E3E3E3;color:#8099B0;border-right:solid 1px #c9c9c9 !important}ul.nav li.active ul li.active a{background-color:#C9C9C9;color:black !important;font-weight:bold !important}ul.nav li.active ul li.active ul li.active a{color:black !important;font-weight:bold !important;display:block !important}ul.nav li.active ul li.active ul li a{color:#808080 !important;font-weight:normal !important;display:block !important}ul.nav li.active ul li ul li a{display:none !important}ul.nav li ul li ul li ul li{display:none !important}ul.nav li.active>a{border-bottom:solid 1px #c9c9c9 !important;border-right:solid 1px #c9c9c9 !important}ul.nav li.active a{color:gray !important;font-weight:bold;background-color:white;border-right:solid 0px white !important}ul.nav>li.active>a{color:black !important}#toggle-sidebar{display:none}li.divide-top{border-top:solid 1px #404040}li.divide-bottom{border-bottom:solid 1px #404040}li.current{background:#e3e3e3}li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:0.4045em 2.427em}li.current a:hover{background:#d6d6d6}li a{position:relative;border:none;padding-left:1.618em -4px}li.on a:hover{background:#fcfcfc}li.current>a:hover{background:#fcfcfc}li.current ul{display:block}.local-toc li ul{display:block}li ul li a{margin-bottom:0;color:#b3b3b3;font-weight:normal}@media (max-width: 768px){#copyright,#postamble{display:none}#toggle-sidebar{display:block;margin-bottom:1.6em;padding:1.0em;text-align:center}#toggle-sidebar h2{position:fixed;width:100%;left:0;top:0;color:#fcfcfc;background-color:#6b7adb;text-align:center;padding:1em;display:block;font-size:1rem;z-index:20}}#copyright{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:Merriweather,Georgia,"Times New Roman",serif,FontAwesome;font-size:0.9rem;z-index:400;padding:12px}#copyright a{color:#2980B9;text-decoration:none}#copyright .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:0.9rem;cursor:pointer;color:#27AE60;*zoom:1}#postamble{position:fixed;bottom:0;left:0;width:300px;padding:12px;color:#fcfcfc;background:#1f1f1f;border-top:solid 10px #343131;font-family:Merriweather,Georgia,"Times New Roman",serif,FontAwesome;font-size:0.8em;z-index:400}#postamble .author{font-size:1rem;margin-bottom:0px}#postamble .date{font-size:0.9rem;margin-bottom:0px;color:#6bdbb6}#postamble .creator,#postamble .validation{display:none}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}pre.src,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}@media print{#postamble{display:none}#content{margin-left:0}}@media print{#table-of-contents{display:none}@page{size:auto;margin:25mm 25mm 25mm 25mm}body{margin:0px}}sup a.footref,sup a.footnum{color:#2980b9;font-size:0.75rem;font-family:Roboto,sans-serif,FontAwesome}sup a.footref:before,sup a.footnum:before{content:"["}sup a.footref:after,sup a.footnum:after{content:"]"}sup a.footref:visited,sup a.footnum:visited{color:#2980b9}#footnotes div.footdef{display:flex}#footnotes div.footdef sup{line-height:1;padding:8px;top:0}#footnotes div.footdef div.footpara{margin:0;padding:0}#footnotes div.footdef div.footpara p{color:#999;font-size:0.9rem;font-family:Roboto,sans-serif,FontAwesome;padding:8px;line-height:1.25em;margin:0}.aside{padding-left:1.0em;margin-left:0.5em;border-left:2px solid #a3a3a3}@media (min-width: 1200px){.aside{width:30%;float:right}}.aside>p{margin:0.2em;font-size:0.8rem}div.csl-bib-body .csl-entry{margin-bottom:1em}.org-bold{font-weight:700}.org-bold-italic{font-weight:700;font-style:italic}.org-buffer-menu-buffer{font-weight:700}.org-builtin{color:#7a378b}.org-button{text-decoration:underline}.org-calendar-today{text-decoration:underline}.org-change-log-acknowledgement{color:#b22222}.org-change-log-conditionals{color:#a0522d}.org-change-log-date{color:#8b2252}.org-change-log-email{color:#a0522d}.org-change-log-file{color:#0000ff}.org-change-log-function{color:#a0522d}.org-change-log-list{color:#a020f0}.org-change-log-name{color:#008b8b}.org-comint-highlight-input{font-weight:700}.org-comint-highlight-prompt{color:#00008b}.org-completions-annotations{font-style:italic}.org-completions-common-part{color:#000000;background-color:#ffffff}.org-completions-first-difference{font-weight:700}.org-diary{color:#ff0000}.org-diff-context{color:#7f7f7f}.org-diff-file-header{background-color:#b3b3b3;font-weight:700}.org-diff-function{background-color:#cccccc}.org-diff-header{background-color:#cccccc}.org-diff-hunk-header{background-color:#cccccc}.org-diff-index{background-color:#b3b3b3;font-weight:s 700}.org-diff-nonexistent{background-color:#b3b3b3;font-weight:s 700}.org-diff-refine-change{background-color:#d9d9d9}.org-dired-directory{color:#0000ff}.org-dired-flagged{color:#ff0000;font-weight:s 700}.org-dired-header{color:#228b22}.org-dired-ignored{color:#7f7f7f}.org-dired-mark{color:#008b8b}.org-dired-marked{color:#ff0000;font-weight:s 700}.org-dired-perm-write{color:#b22222}.org-dired-symlink{color:#a020f0}.org-dired-warning{color:#ff0000;font-weight:s 700}.org-doc{color:#8b2252}.org-escape-glyph{color:#a52a2a}.org-file-name-shadow{color:#7f7f7f}.org-flyspell-duplicate{color:#cdad00;font-weight:s 700;text-decoration:underline}.org-flyspell-incorrect{color:#ff4500;font-weight:s 700;text-decoration:underline}.org-fringe{background-color:#f2f2f2}.org-function-name{color:teal}.org-header-line{color:#333333;background-color:#e5e5e5}.org-help-argument-name{font-style:italic}.org-highlight{background-color:#b4eeb4}.org-holiday{background-color:#ffc0cb}.org-isearch{color:#b0e2ff;background-color:#cd00cd}.org-isearch-fail{background-color:#ffc1c1}.org-italic{font-style:italic}.org-keyword{color:#0086b3}.org-lazy-highlight{background-color:#afeeee}.org-link{color:#0000ff;text-decoration:underline}.org-link-visited{color:#8b008b;text-decoration:underline}.org-log-edit-header{color:#a020f0}.org-log-edit-summary{color:#0000ff}.org-log-edit-unknown-header{color:#b22222}.org-match{background-color:#ffff00}.org-next-error{background-color:#eedc82}.org-nobreak-space{color:#a52a2a;text-decoration:underline}.org-org-archived{color:#7f7f7f}.org-org-block{color:#7f7f7f}.org-org-block-begin-line{color:#b22222}.org-org-block-end-line{color:#b22222}.org-org-checkbox{font-weight:s 700}.org-org-checkbox-statistics-done{color:#228b22;font-weight:s 700}.org-org-checkbox-statistics-todo{color:#ff0000;font-weight:s 700}.org-org-clock-overlay{background-color:#ffff00}.org-org-code{color:#7f7f7f}.org-org-column{background-color:#e5e5e5}.org-org-column-title{background-color:#e5e5e5;font-weight:s 700;text-decoration:underline}.org-org-date{color:#a020f0;text-decoration:underline}.org-org-document-info{color:#191970}.org-org-document-info-keyword{color:#7f7f7f}.org-org-document-title{color:#191970;font-size:1.45rem;font-weight:s 700}.org-org-done{color:#228b22;font-weight:s 700}.org-org-drawer{color:#0000ff}.org-org-ellipsis{color:#b8860b;text-decoration:underline}.org-org-footnote{color:#a020f0;text-decoration:underline}.org-org-formula{color:#b22222}.org-org-headline-done{color:#bc8f8f}.org-org-hide{color:#ffffff}.org-org-latex-and-export-specials{color:#8b4513}.org-org-level-1{color:#0000ff}.org-org-level-2{color:#a0522d}.org-org-level-3{color:#a020f0}.org-org-level-4{color:#b22222}.org-org-level-5{color:#228b22}.org-org-level-6{color:#008b8b}.org-org-level-7{color:#7a378b}.org-org-level-8{color:#8b2252}.org-org-link{color:#0000ff;text-decoration:underline}.org-org-meta-line{color:#b22222}.org-org-mode-line-clock{color:#000000;background-color:#bfbfbf}.org-org-mode-line-clock-overrun{color:#000000;background-color:#ff0000}.org-org-quote{color:#7f7f7f}.org-org-scheduled{color:#006400}.org-org-scheduled-previously{color:#b22222}.org-org-scheduled-today{color:#006400}.org-org-sexp-date{color:#a020f0}.org-org-special-keyword{color:#a020f0}.org-org-table{color:#0000ff}.org-org-tag{font-weight:s 700}.org-org-target{text-decoration:underline}.org-org-time-grid{color:#b8860b}.org-org-todo{color:#ff0000;font-weight:s 700}.org-org-upcoming-deadline{color:#b22222}.org-org-verbatim{color:#7f7f7f}.org-org-verse{color:#7f7f7f}.org-org-warning{color:#ff0000;font-weight:s 700}.org-outline-1{color:#0000ff}.org-outline-2{color:#a0522d}.org-outline-3{color:#a020f0}.org-outline-4{color:#b22222}.org-outline-5{color:#228b22}.org-outline-6{color:#008b8b}.org-outline-7{color:#7a378b}.org-outline-8{color:#8b2252}.org-preprocessor{color:#7a378b}.org-query-replace{color:#b0e2ff;background-color:#cd00cd}.org-regexp-grouping-backslash{font-weight:s 700}.org-regexp-grouping-construct{font-weight:s 700}.org-region{background-color:#eedc82}.org-secondary-selection{background-color:#ffff00}.org-shadow{color:#7f7f7f}.org-show-paren-match{background-color:#40e0d0}.org-show-paren-mismatch{color:#ffffff;background-color:#a020f0}.org-tool-bar{color:#000000;background-color:#bfbfbf}.org-tooltip{color:#000000;background-color:#ffffe0}.org-trailing-whitespace{background-color:#ff0000}.org-underline{text-decoration:underline}.org-warning{color:#ff0000;font-weight:s 700}.org-widget-button{font-weight:s 700}.org-widget-button-pressed{color:#ff0000}.org-widget-documentation{color:#006400}.org-widget-field{background-color:#d9d9d9}.org-widget-inactive{color:#7f7f7f}.org-widget-single-line-field{background-color:#d9d9d9}.org-font-latex-sedate{color:#0086b3}.org-font-latex-math{color:#006400}ul{list-style:disc;line-height:24px;margin-bottom:1em}ul li{margin-left:24px}ol{list-style:decimal;line-height:24px;margin-bottom:1em}ol li{margin-left:24px}dl{margin-bottom:1em}dl dt{font-weight:700;vertical-align:top}dl dd{margin:0 0 12px 24px}.seealso{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f0f0f0}.seealso>p:last-child{margin-bottom:0}.seealso.admonition-title{line-height:1;background:#a3a3a3;margin-bottom:0px}.seealso.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.definition{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f9e6e6}.definition>p:last-child{margin-bottom:0}.definition.admonition-title{line-height:1;background:#db6b6b;margin-bottom:0px}.definition.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.exampl{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#e6f9f3}.exampl>p:last-child{margin-bottom:0}.exampl.admonition-title{line-height:1;background:#6bdbb6;margin-bottom:0px}.exampl.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.question{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f9f7e6}.question>p:last-child{margin-bottom:0}.question.admonition-title{line-height:1;background:#dbd26b;margin-bottom:0px}.question.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.exercice{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f9f7e6}.exercice>p:last-child{margin-bottom:0}.exercice.admonition-title{line-height:1;background:#dbd26b;margin-bottom:0px}.exercice.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.answer{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#e6f6f9}.answer>p:last-child{margin-bottom:0}.answer.admonition-title{line-height:1;background:#6bc7db;margin-bottom:0px}.answer.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.summary{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#e6e9f9}.summary>p:last-child{margin-bottom:0}.summary.admonition-title{line-height:1;background:#6b7adb;margin-bottom:0px}.summary.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.note{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#e6e9f9}.note>p:last-child{margin-bottom:0}.note.admonition-title{line-height:1;background:#6b7adb;margin-bottom:0px}.note.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.hint{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f0f0f0}.hint>p:last-child{margin-bottom:0}.hint.admonition-title{line-height:1;background:#a3a3a3;margin-bottom:0px}.hint.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.important{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f9e6e6}.important>p:last-child{margin-bottom:0}.important.admonition-title{line-height:1;background:#db6b6b;margin-bottom:0px}.important.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.caution{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f9f0e6}.caution>p:last-child{margin-bottom:0}.caution.admonition-title{line-height:1;background:#dba76b;margin-bottom:0px}.caution.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.warning{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f9f0e6}.warning>p:last-child{margin-bottom:0}.warning.admonition-title{line-height:1;background:#dba76b;margin-bottom:0px}.warning.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}#content .admonition-title{color:#fcfcfc;font-weight:700;display:block;padding:6px 12px;margin-bottom:0px}#content .admonition-title:before{margin-right:8px;font-family:FontAwesome;display:inline-block;font-weight:900;line-height:1;text-decoration:inherit}.org-src-container{position:relative;overflow:visible;margin-top:1em}.org-src-container label{text-align:center;cursor:text;font-size:0.85rem;font-family:Merriweather,Georgia,"Times New Roman",serif,FontAwesome;font-style:italic;color:#404040}.org-src-container label .listing-number{font-weight:700;color:#22308c}.org-src-container div.src-copy{display:inline;position:absolute;color:#a6a6a6;background-color:#fff;padding:0px 4px;border:1px solid #e1e4e5;font-size:0.6rem;top:-9px;z-index:10;font-family:"Source Code Pro",monospace;line-height:1.5;right:10px;cursor:pointer}.org-src-container div.src-copy.src-copied{color:#fcfcfc;background-color:#6b7adb}.org-src-container .linenr{color:#a6a6a6}.org-src-container>pre{position:relative;overflow:visible;border:1px solid #e1e4e5;background:#fff;display:block;font-family:"Source Code Pro",monospace;font-size:0.75rem;line-height:1.5;padding:12px;margin-bottom:24px;white-space:pre-wrap}.org-src-container>pre.src:before{display:inline;position:absolute;color:#a6a6a6;background-color:#fff;padding:0px 4px;border:1px solid #e1e4e5;font-size:0.6rem;top:-9px;z-index:10;font-family:"Source Code Pro",monospace;left:10px}.org-src-container>pre.src-emacs-lisp:before{content:'Emacs Lisp'}.org-src-container>pre.src-elisp:before{content:'Emacs Lisp'}.org-src-container>pre.src-sh:before{content:'shell'}.org-src-container>pre.src-bash:before{content:'bash'}.org-src-container>pre.src-org:before{content:'Org mode'}.org-src-container>pre.src-python:before{content:'Python'}.org-src-container>pre.src-latex:before{content:'LaTeX'}.org-src-container>pre.src-matlab:before{content:'Matlab'}.org-src-container>pre.src-bibtex:before{content:'BibTeX'}pre.example{position:relative;background:#edf0f2;border:1px solid #e1e4e5;color:#404040;font-size:0.75rem;line-height:1.5;margin-bottom:24px;padding:12px;font-family:"Source Code Pro",monospace}pre.example:before{display:inline;position:absolute;color:#a6a6a6;background-color:#fff;padding:0px 4px;border:1px solid #e1e4e5;font-size:0.6rem;top:-9px;z-index:10;font-family:"Source Code Pro",monospace;content:"Results";display:inline;left:10px}.org-type{color:#228b22}.org-comment{color:#999988;font-style:italic}.org-comment-delimiter{color:#999988;font-style:italic}.org-string{color:#dd1144}.org-matlab-cellbreak{text-decoration:underline;text-decoration-color:#999988}.org-constant{color:#008b8b}.org-variable-name{color:teal}.figure{margin-bottom:24px}.figure p{color:#404040;font-size:0.85rem;font-family:Merriweather,Georgia,"Times New Roman",serif,FontAwesome;font-style:italic;text-align:center;margin:0}.figure img{max-width:100%;display:block;margin:auto;padding-bottom:0.5em}.figure .figure-number{font-weight:700;color:#22308c}figcaption,figure,footer,header,hgroup,nav{display:block}table{margin-left:auto;margin-right:auto;border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px;border-bottom:3px solid #e1e4e5}table td,table th{font-size:0.9rem;margin:0;overflow:visible;padding:8px 16px;background-color:#fff;border:1px solid #e1e4e5}table .org-right{margin-left:auto;margin-right:0px;text-align:right}table .org-left{margin-left:0px;margin-right:auto;text-align:left}table .org-center{margin-left:auto;margin-right:auto;text-align:center}table thead th{font-weight:700;border-top:3px solid #e1e4e5;border-bottom:1px solid #e1e4e5}table tbody{border-top:3px solid #e1e4e5}table caption{color:#404040;font-size:0.85em;font-family:Merriweather,Georgia,"Times New Roman",serif,FontAwesome;font-style:italic;padding:1em 0}table caption .table-number{font-weight:700;color:#22308c}div.yt{position:relative;padding-bottom:56.25%}div.yt iframe{position:absolute;top:0;left:0;width:100%;height:100%}video{max-width:100%}details{background:#edf0f2;border:1px solid #666;border-radius:3px;margin-bottom:1.0em;padding:12px}details pre.src{margin-top:12px;margin-bottom:0}details summary{outline:0;color:#666;padding:0px;margin:0px;cursor:pointer}details summary::after{font-size:0.85em;color:#666;float:right;padding-right:0.5em;content:"Click to fold/unfold"}@media (max-width: 768px){.tablet-hide{display:none}}@media (max-width: 480px){.mobile-hide{display:none}}@media (max-width: 768px){#content{margin-left:0}#content #content{padding:1.618em}#content.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media (max-width: 768px){#copyright{width:85%;display:none}#copyright.shift{display:block}}@media (max-width: 480px){#content .sidebar{width:100%}} +@import url("https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap");@import url("https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap");@import url("https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap");@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/fontawesome.min.css");html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:1rem;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}*{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}blockquote,q{quotes:none}blockquote:before,blockquote:after{content:'';content:none}q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}@use "sass:color";html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:16px;height:100%;overflow-x:hidden}body{background:#edf0f2;color:#404040;font-family:Roboto,sans-serif,FontAwesome;font-weight:400;margin:0;min-height:100%;overflow-x:hidden}#content{background:#fcfcfc;height:100%;min-height:100%;margin-left:300px;max-width:1200px;padding:1.618em 3.236em}a{color:#6b7adb;text-decoration:none;cursor:pointer}a:hover{outline:0;color:#6b7adb}a:visited{outline:0;color:#6b7adb}p{font-size:1rem;line-height:24px;margin:0 0 1.5em 0}b,strong{font-weight:700}i{font-style:italic}.underline{text-decoration:underline}code{background:#fff;border:solid 1px #e1e4e5;font-family:"Source Code Pro",monospace;font-size:0.75em;max-width:100%;overflow-x:auto;padding:0 5px;white-space:nowrap}blockquote{background-color:#f0f0f0;border-left:5px solid #a3a3a3;font-style:italic;line-height:24px;margin:0px 0px 24px 0px;padding:6px 20px}blockquote>p{margin-bottom:1em}blockquote>p:last-child{margin-bottom:0}sub,sup{font-size:0.6rem;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}mark{background:#ff0;color:#000;font-style:italic;font-weight:700}small{font-size:0.85rem}img{-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}label{cursor:pointer;display:block;margin:0 0 0.3125em 0;color:#333;font-size:0.9rem}legend{border:0;margin-left:-7px;padding:0;white-space:normal;display:block;width:100%;padding:0;white-space:normal;margin-bottom:24px;font-size:1.5rem}.nav #content .admonition-title,#content .nav .admonition-title,.nav .icon{display:inline}.left{text-align:left}.center{text-align:center}.right{text-align:right}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}#content img{max-width:100%}#content .section>img,#content .section>a>img{margin-bottom:24px}.verse{border-left:5px solid #6AB0DE;background-color:#E7F2FA;padding:6px 20px;font-style:italic}#content .section ol p,#content .section ul p{margin-bottom:12px}#content h1 .headerlink,#content h2 .headerlink,#content h3 .headerlink,#content h4 .headerlink,#content h5 .headerlink,#content h6 .headerlink,#content dl dt .headerlink{display:none;visibility:hidden;font-size:14px}#content h1 .headerlink:after,#content h2 .headerlink:after,#content h3 .headerlink:after,#content h4 .headerlink:after,#content h5 .headerlink:after,#content h6 .headerlink:after,#content dl dt .headerlink:after{visibility:visible;content:"";font-family:FontAwesome;font-weight:900;display:inline-block}#content h1:hover .headerlink,#content h2:hover .headerlink,#content h3:hover .headerlink,#content h4:hover .headerlink,#content h5:hover .headerlink,#content h6:hover .headerlink,#content dl dt:hover .headerlink{display:inline-block}#content .highlighted{background:#F1C40F;display:inline-block;font-weight:700;padding:0 6px}#content .footnote-reference,#content .citation-reference{vertical-align:super;font-size:0.9rem}span[id*='MathJax-Span']{color:#404040}.math{text-align:center}.fa:before,#content h1 .headerlink:before,#content h2 .headerlink:before,#content h3 .headerlink:before,#content h4 .headerlink:before,#content h5 .headerlink:before,#content h6 .headerlink:before,#content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,#table-of-contents li.on a,#table-of-contents li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.fa,.icon{display:inline-block;font-family:FontAwesome;font-style:normal;font-style:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.figure.wrap-right{float:right}.figure.wrap-right:after{content:'';display:block;clear:both}.figure.wrap-left{float:left}.figure.wrap-left:after{content:'';display:block;clear:both}@-webkit-keyframes target{from{background:#ffffff}50%{background:#ffffd3}to{background:#ffffff}}:target{-webkit-animation:target .5s linear}.todo{background-color:#db6b6b;padding:0px 4px;color:#fff}.todo.WAIT{background-color:#dba76b}.done{background-color:#6bdbb6;padding:0px 4px;color:#fff}.priority{color:#eea859;font-family:"Source Code Pro",monospace}.tag span{background-color:#f0f0f0;border:1px solid #a3a3a3;color:#939393;cursor:pointer;display:block;float:right;font-size:0.7rem;font-weight:400;margin:0 3px;padding:5px;border-radius:3px}.timestamp-wrapper{font-size:0.8rem;margin-left:2em}.timestamp-wrapper .timestamp{color:#22308c;font-family:"Source Code Pro",monospace}.title{font-size:1.75rem;margin-bottom:1em;font-weight:700;text-align:center}.title .subtitle{font-size:0.8rem}h1,h2,h3,h4,h5,h6{font-family:Roboto,sans-serif,FontAwesome}h1{font-size:1.75rem;margin-bottom:1em;font-weight:700;text-align:center}h2{clear:both;font-size:1.5rem;margin-bottom:1em;font-weight:700}h3{clear:both;font-size:1.25rem;margin-bottom:0.5em}h4{font-size:1.15rem;margin-bottom:0.5em;color:#2980B9;font-weight:300}h5{font-size:1.1rem;margin-bottom:0.5em;color:#2980B9;font-weight:light}#org-div-home-and-up{position:absolute;right:0;z-index:100;padding:10px}@media all and (min-width: 1500px){#org-div-home-and-up{right:auto;width:1500px;text-align:right}}@media (max-width: 768px){#org-div-home-and-up{position:fixed;padding:1em;color:#2c3eb5}#org-div-home-and-up a{color:#fcfcfc}}#table-of-contents{position:fixed;top:0;left:0;width:300px;overflow-x:hidden;overflow-y:scroll;height:100%;background:#333;z-index:200}#table-of-contents h2{color:#fcfcfc;background-color:#6b7adb;text-align:center;padding:1em;display:block;font-size:1rem;z-index:200}#table-of-contents a{display:block;position:relative;line-height:1.5em;font-size:0.9rem;color:#a6a6a6}#table-of-contents a:hover{background-color:#666;cursor:pointer}#table-of-contents .close-sidebar{display:none}#table-of-contents li{list-style:none;margin-left:0px}#table-of-contents ul{margin-bottom:0}#table-of-contents li a{padding:0.4em 1.6em}#table-of-contents li ul li a{padding:0.4em 2.4em}#table-of-contents li ul li ul li a{padding:0.4em 3.0em}#table-of-contents li ul li ul li ul li a{padding:0.4em 3.6em}#table-of-contents .tag{display:none}@media (max-width: 768px){#table-of-contents{display:none;width:60%;box-shadow:-25px 0px 10px 32px #000}#table-of-contents:target{display:block}#table-of-contents .close-sidebar{color:#fcfcfc;display:block;margin-left:10px;float:right}#table-of-contents .close-sidebar:hover{background-color:#6b7adb}}ul.nav li ul li{display:none}ul.nav li ul li ul li{display:none}ul.nav li.active ul li{display:inline}ul.nav li.active ul li ul li{display:inline}ul.nav li.active ul li a{background-color:#E3E3E3;color:#8099B0;border-right:solid 1px #c9c9c9 !important}ul.nav li.active ul li.active a{background-color:#C9C9C9;color:black !important;font-weight:bold !important}ul.nav li.active ul li.active ul li.active a{color:black !important;font-weight:bold !important;display:block !important}ul.nav li.active ul li.active ul li a{color:#808080 !important;font-weight:normal !important;display:block !important}ul.nav li.active ul li ul li a{display:none !important}ul.nav li ul li ul li ul li{display:none !important}ul.nav li.active>a{border-bottom:solid 1px #c9c9c9 !important;border-right:solid 1px #c9c9c9 !important}ul.nav li.active a{color:gray !important;font-weight:bold;background-color:white;border-right:solid 0px white !important}ul.nav>li.active>a{color:black !important}#toggle-sidebar{display:none}li.divide-top{border-top:solid 1px #404040}li.divide-bottom{border-bottom:solid 1px #404040}li.current{background:#e3e3e3}li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:0.4045em 2.427em}li.current a:hover{background:#d6d6d6}li a{position:relative;border:none;padding-left:1.618em -4px}li.on a:hover{background:#fcfcfc}li.current>a:hover{background:#fcfcfc}li.current ul{display:block}.local-toc li ul{display:block}li ul li a{margin-bottom:0;color:#b3b3b3;font-weight:normal}@media (max-width: 768px){#copyright,#postamble{display:none}#toggle-sidebar{display:block;margin-bottom:1.6em;padding:1.0em;text-align:center}#toggle-sidebar h2{position:fixed;width:100%;left:0;top:0;color:#fcfcfc;background-color:#6b7adb;text-align:center;padding:1em;display:block;font-size:1rem;z-index:20}}#copyright{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:Merriweather,Georgia,"Times New Roman",serif,FontAwesome;font-size:0.9rem;z-index:400;padding:12px}#copyright a{color:#2980B9;text-decoration:none}#copyright .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:0.9rem;cursor:pointer;color:#27AE60;*zoom:1}#postamble{position:fixed;bottom:0;left:0;width:300px;padding:12px;color:#fcfcfc;background:#1f1f1f;border-top:solid 10px #343131;font-family:Merriweather,Georgia,"Times New Roman",serif,FontAwesome;font-size:0.8em;z-index:400}#postamble .author{font-size:1rem;margin-bottom:0px}#postamble .date{font-size:0.9rem;margin-bottom:0px;color:#6bdbb6}#postamble .creator,#postamble .validation{display:none}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}pre.src,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}@media print{#postamble{display:none}#content{margin-left:0}}@media print{#table-of-contents{display:none}@page{size:auto;margin:25mm 25mm 25mm 25mm}body{margin:0px}}sup a.footref,sup a.footnum{color:#2980b9;font-size:0.75rem;font-family:Roboto,sans-serif,FontAwesome}sup a.footref:before,sup a.footnum:before{content:"["}sup a.footref:after,sup a.footnum:after{content:"]"}sup a.footref:visited,sup a.footnum:visited{color:#2980b9}#footnotes div.footdef{display:flex}#footnotes div.footdef sup{line-height:1;padding:8px;top:0}#footnotes div.footdef div.footpara{margin:0;padding:0}#footnotes div.footdef div.footpara p{color:#999;font-size:0.9rem;font-family:Roboto,sans-serif,FontAwesome;padding:8px;line-height:1.25em;margin:0}.aside{padding-left:1.0em;margin-left:0.5em;border-left:2px solid #a3a3a3}@media (min-width: 1200px){.aside{width:30%;float:right}}.aside>p{margin:0.2em;font-size:0.8rem}div.csl-bib-body .csl-entry{margin-bottom:1em}.org-bold{font-weight:700}.org-bold-italic{font-weight:700;font-style:italic}.org-buffer-menu-buffer{font-weight:700}.org-builtin{color:#7a378b}.org-button{text-decoration:underline}.org-calendar-today{text-decoration:underline}.org-change-log-acknowledgement{color:#b22222}.org-change-log-conditionals{color:#a0522d}.org-change-log-date{color:#8b2252}.org-change-log-email{color:#a0522d}.org-change-log-file{color:#0000ff}.org-change-log-function{color:#a0522d}.org-change-log-list{color:#a020f0}.org-change-log-name{color:#008b8b}.org-comint-highlight-input{font-weight:700}.org-comint-highlight-prompt{color:#00008b}.org-completions-annotations{font-style:italic}.org-completions-common-part{color:#000000;background-color:#ffffff}.org-completions-first-difference{font-weight:700}.org-diary{color:#ff0000}.org-diff-context{color:#7f7f7f}.org-diff-file-header{background-color:#b3b3b3;font-weight:700}.org-diff-function{background-color:#cccccc}.org-diff-header{background-color:#cccccc}.org-diff-hunk-header{background-color:#cccccc}.org-diff-index{background-color:#b3b3b3;font-weight:s 700}.org-diff-nonexistent{background-color:#b3b3b3;font-weight:s 700}.org-diff-refine-change{background-color:#d9d9d9}.org-dired-directory{color:#0000ff}.org-dired-flagged{color:#ff0000;font-weight:s 700}.org-dired-header{color:#228b22}.org-dired-ignored{color:#7f7f7f}.org-dired-mark{color:#008b8b}.org-dired-marked{color:#ff0000;font-weight:s 700}.org-dired-perm-write{color:#b22222}.org-dired-symlink{color:#a020f0}.org-dired-warning{color:#ff0000;font-weight:s 700}.org-doc{color:#8b2252}.org-escape-glyph{color:#a52a2a}.org-file-name-shadow{color:#7f7f7f}.org-flyspell-duplicate{color:#cdad00;font-weight:s 700;text-decoration:underline}.org-flyspell-incorrect{color:#ff4500;font-weight:s 700;text-decoration:underline}.org-fringe{background-color:#f2f2f2}.org-function-name{color:teal}.org-header-line{color:#333333;background-color:#e5e5e5}.org-help-argument-name{font-style:italic}.org-highlight{background-color:#b4eeb4}.org-holiday{background-color:#ffc0cb}.org-isearch{color:#b0e2ff;background-color:#cd00cd}.org-isearch-fail{background-color:#ffc1c1}.org-italic{font-style:italic}.org-keyword{color:#0086b3}.org-lazy-highlight{background-color:#afeeee}.org-link{color:#0000ff;text-decoration:underline}.org-link-visited{color:#8b008b;text-decoration:underline}.org-log-edit-header{color:#a020f0}.org-log-edit-summary{color:#0000ff}.org-log-edit-unknown-header{color:#b22222}.org-match{background-color:#ffff00}.org-next-error{background-color:#eedc82}.org-nobreak-space{color:#a52a2a;text-decoration:underline}.org-org-archived{color:#7f7f7f}.org-org-block{color:#7f7f7f}.org-org-block-begin-line{color:#b22222}.org-org-block-end-line{color:#b22222}.org-org-checkbox{font-weight:s 700}.org-org-checkbox-statistics-done{color:#228b22;font-weight:s 700}.org-org-checkbox-statistics-todo{color:#ff0000;font-weight:s 700}.org-org-clock-overlay{background-color:#ffff00}.org-org-code{color:#7f7f7f}.org-org-column{background-color:#e5e5e5}.org-org-column-title{background-color:#e5e5e5;font-weight:s 700;text-decoration:underline}.org-org-date{color:#a020f0;text-decoration:underline}.org-org-document-info{color:#191970}.org-org-document-info-keyword{color:#7f7f7f}.org-org-document-title{color:#191970;font-size:1.45rem;font-weight:s 700}.org-org-done{color:#228b22;font-weight:s 700}.org-org-drawer{color:#0000ff}.org-org-ellipsis{color:#b8860b;text-decoration:underline}.org-org-footnote{color:#a020f0;text-decoration:underline}.org-org-formula{color:#b22222}.org-org-headline-done{color:#bc8f8f}.org-org-hide{color:#ffffff}.org-org-latex-and-export-specials{color:#8b4513}.org-org-level-1{color:#0000ff}.org-org-level-2{color:#a0522d}.org-org-level-3{color:#a020f0}.org-org-level-4{color:#b22222}.org-org-level-5{color:#228b22}.org-org-level-6{color:#008b8b}.org-org-level-7{color:#7a378b}.org-org-level-8{color:#8b2252}.org-org-link{color:#0000ff;text-decoration:underline}.org-org-meta-line{color:#b22222}.org-org-mode-line-clock{color:#000000;background-color:#bfbfbf}.org-org-mode-line-clock-overrun{color:#000000;background-color:#ff0000}.org-org-quote{color:#7f7f7f}.org-org-scheduled{color:#006400}.org-org-scheduled-previously{color:#b22222}.org-org-scheduled-today{color:#006400}.org-org-sexp-date{color:#a020f0}.org-org-special-keyword{color:#a020f0}.org-org-table{color:#0000ff}.org-org-tag{font-weight:s 700}.org-org-target{text-decoration:underline}.org-org-time-grid{color:#b8860b}.org-org-todo{color:#ff0000;font-weight:s 700}.org-org-upcoming-deadline{color:#b22222}.org-org-verbatim{color:#7f7f7f}.org-org-verse{color:#7f7f7f}.org-org-warning{color:#ff0000;font-weight:s 700}.org-outline-1{color:#0000ff}.org-outline-2{color:#a0522d}.org-outline-3{color:#a020f0}.org-outline-4{color:#b22222}.org-outline-5{color:#228b22}.org-outline-6{color:#008b8b}.org-outline-7{color:#7a378b}.org-outline-8{color:#8b2252}.org-preprocessor{color:#7a378b}.org-query-replace{color:#b0e2ff;background-color:#cd00cd}.org-regexp-grouping-backslash{font-weight:s 700}.org-regexp-grouping-construct{font-weight:s 700}.org-region{background-color:#eedc82}.org-secondary-selection{background-color:#ffff00}.org-shadow{color:#7f7f7f}.org-show-paren-match{background-color:#40e0d0}.org-show-paren-mismatch{color:#ffffff;background-color:#a020f0}.org-tool-bar{color:#000000;background-color:#bfbfbf}.org-tooltip{color:#000000;background-color:#ffffe0}.org-trailing-whitespace{background-color:#ff0000}.org-underline{text-decoration:underline}.org-warning{color:#ff0000;font-weight:s 700}.org-widget-button{font-weight:s 700}.org-widget-button-pressed{color:#ff0000}.org-widget-documentation{color:#006400}.org-widget-field{background-color:#d9d9d9}.org-widget-inactive{color:#7f7f7f}.org-widget-single-line-field{background-color:#d9d9d9}.org-font-latex-sedate{color:#0086b3}.org-font-latex-math{color:#006400}ul{list-style:disc;line-height:24px;margin-bottom:1em}ul li{margin-left:24px}ol{list-style:decimal;line-height:24px;margin-bottom:1em}ol li{margin-left:24px}dl{margin-bottom:1em}dl dt{font-weight:700;vertical-align:top}dl dd{margin:0 0 12px 24px}.seealso{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f0f0f0}.seealso>p:last-child{margin-bottom:0}.seealso.admonition-title{line-height:1;background:#a3a3a3;margin-bottom:0px}.seealso.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.definition{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f9e6e6}.definition>p:last-child{margin-bottom:0}.definition.admonition-title{line-height:1;background:#db6b6b;margin-bottom:0px}.definition.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.exampl{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#e6f9f3}.exampl>p:last-child{margin-bottom:0}.exampl.admonition-title{line-height:1;background:#6bdbb6;margin-bottom:0px}.exampl.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.question{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f9f7e6}.question>p:last-child{margin-bottom:0}.question.admonition-title{line-height:1;background:#dbd26b;margin-bottom:0px}.question.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.exercice{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f9f7e6}.exercice>p:last-child{margin-bottom:0}.exercice.admonition-title{line-height:1;background:#dbd26b;margin-bottom:0px}.exercice.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.answer{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#e6f6f9}.answer>p:last-child{margin-bottom:0}.answer.admonition-title{line-height:1;background:#6bc7db;margin-bottom:0px}.answer.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.summary{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#e6e9f9}.summary>p:last-child{margin-bottom:0}.summary.admonition-title{line-height:1;background:#6b7adb;margin-bottom:0px}.summary.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.note{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#e6e9f9}.note>p:last-child{margin-bottom:0}.note.admonition-title{line-height:1;background:#6b7adb;margin-bottom:0px}.note.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.hint{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f0f0f0}.hint>p:last-child{margin-bottom:0}.hint.admonition-title{line-height:1;background:#a3a3a3;margin-bottom:0px}.hint.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.important{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f9e6e6}.important>p:last-child{margin-bottom:0}.important.admonition-title{line-height:1;background:#db6b6b;margin-bottom:0px}.important.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.caution{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f9f0e6}.caution>p:last-child{margin-bottom:0}.caution.admonition-title{line-height:1;background:#dba76b;margin-bottom:0px}.caution.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}.warning{padding:12px;line-height:24px;margin-bottom:24px;-webkit-font-smoothing:antialiased;background:#f9f0e6}.warning>p:last-child{margin-bottom:0}.warning.admonition-title{line-height:1;background:#dba76b;margin-bottom:0px}.warning.admonition-title:before{font-family:FontAwesome;font-weight:900;content:""}#content .admonition-title{color:#fcfcfc;font-weight:700;display:block;padding:6px 12px;margin-bottom:0px}#content .admonition-title:before{margin-right:8px;font-family:FontAwesome;display:inline-block;font-weight:900;line-height:1;text-decoration:inherit}.org-src-container{position:relative;overflow:visible;margin-top:1em}.org-src-container label{text-align:center;cursor:text;font-size:0.85rem;font-family:Merriweather,Georgia,"Times New Roman",serif,FontAwesome;font-style:italic;color:#404040}.org-src-container label .listing-number{font-weight:700;color:#22308c}.org-src-container div.src-copy{display:inline;position:absolute;color:#a6a6a6;background-color:#fff;padding:0px 4px;border:1px solid #e1e4e5;font-size:0.6rem;top:-9px;z-index:10;font-family:"Source Code Pro",monospace;line-height:1.5;right:10px;cursor:pointer}.org-src-container div.src-copy.src-copied{color:#fcfcfc;background-color:#6b7adb}.org-src-container .linenr{color:#a6a6a6}.org-src-container>pre{position:relative;overflow:visible;border:1px solid #e1e4e5;background:#fff;display:block;font-family:"Source Code Pro",monospace;font-size:0.75rem;line-height:1.5;padding:12px;margin-bottom:24px;white-space:pre-wrap}.org-src-container>pre.src:before{display:inline;position:absolute;color:#a6a6a6;background-color:#fff;padding:0px 4px;border:1px solid #e1e4e5;font-size:0.6rem;top:-9px;z-index:10;font-family:"Source Code Pro",monospace;left:10px}.org-src-container>pre.src-emacs-lisp:before{content:'Emacs Lisp'}.org-src-container>pre.src-elisp:before{content:'Emacs Lisp'}.org-src-container>pre.src-sh:before{content:'shell'}.org-src-container>pre.src-bash:before{content:'bash'}.org-src-container>pre.src-org:before{content:'Org mode'}.org-src-container>pre.src-python:before{content:'Python'}.org-src-container>pre.src-latex:before{content:'LaTeX'}.org-src-container>pre.src-matlab:before{content:'Matlab'}.org-src-container>pre.src-bibtex:before{content:'BibTeX'}pre.example{position:relative;background:#edf0f2;border:1px solid #e1e4e5;color:#404040;font-size:0.75rem;line-height:1.5;margin-bottom:24px;padding:12px;font-family:"Source Code Pro",monospace}pre.example:before{display:inline;position:absolute;color:#a6a6a6;background-color:#fff;padding:0px 4px;border:1px solid #e1e4e5;font-size:0.6rem;top:-9px;z-index:10;font-family:"Source Code Pro",monospace;content:"Results";display:inline;left:10px}.org-type{color:#228b22}.org-comment{color:#999988;font-style:italic}.org-comment-delimiter{color:#999988;font-style:italic}.org-string{color:#dd1144}.org-matlab-cellbreak{text-decoration:underline;text-decoration-color:#999988}.org-constant{color:#008b8b}.org-variable-name{color:teal}.figure{margin-bottom:24px}.figure p{color:#404040;font-size:0.85rem;font-family:Merriweather,Georgia,"Times New Roman",serif,FontAwesome;font-style:italic;text-align:center;margin:0}.figure img{max-width:100%;display:block;margin:auto;padding-bottom:0.5em}.figure .figure-number{font-weight:700;color:#22308c}figcaption,figure,footer,header,hgroup,nav{display:block}table{margin-left:auto;margin-right:auto;border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px;border-bottom:3px solid #e1e4e5}table td,table th{font-size:0.9rem;margin:0;overflow:visible;padding:8px 16px;background-color:#fff;border:1px solid #e1e4e5}table .org-right{margin-left:auto;margin-right:0px;text-align:right}table .org-left{margin-left:0px;margin-right:auto;text-align:left}table .org-center{margin-left:auto;margin-right:auto;text-align:center}table thead th{font-weight:700;border-top:3px solid #e1e4e5;border-bottom:1px solid #e1e4e5}table tbody{border-top:3px solid #e1e4e5}table caption{color:#404040;font-size:0.85em;font-family:Merriweather,Georgia,"Times New Roman",serif,FontAwesome;font-style:italic;padding:1em 0}table caption .table-number{font-weight:700;color:#22308c}div.yt{position:relative;padding-bottom:56.25%}div.yt iframe{position:absolute;top:0;left:0;width:100%;height:100%}video{max-width:100%}details{background:#edf0f2;border:1px solid #666;border-radius:3px;margin-bottom:1.0em;padding:12px}details pre.src{margin-top:12px;margin-bottom:0}details summary{outline:0;color:#666;padding:0px;margin:0px;cursor:pointer}details summary::after{font-size:0.85em;color:#666;float:right;padding-right:0.5em;content:"Click to fold/unfold"}@media (max-width: 768px){.tablet-hide{display:none}}@media (max-width: 480px){.mobile-hide{display:none}}@media (max-width: 768px){#content{margin-left:0}#content #content{padding:1.618em}#content.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media (max-width: 768px){#copyright{width:85%;display:none}#copyright.shift{display:block}}@media (max-width: 480px){#content .sidebar{width:100%}} diff --git a/docs/doom.html b/docs/doom.html index c36cf88..b0514a1 100644 --- a/docs/doom.html +++ b/docs/doom.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Doom Emacs Configuration @@ -53,7 +53,7 @@
  • Org General Config
  • Org Inline Images
  • -
  • Org Links
  • +
  • Org Links
  • Org Tagging
  • Org Refile
  • Org TODO
  • @@ -97,7 +97,7 @@
  • Render Tables
  • Org Special Block Extras
  • Org Inline Task
  • -
  • Org Links +
  • Org Links @@ -151,7 +151,7 @@
  • LaTeX
  • @@ -169,7 +169,7 @@
  • Resources
  • Cheatsheet
  • Helping function
  • -
  • Basic Config
  • +
  • Basic Config
  • Additional config
  • Provide Information
  • Receiving emails using mbsync
  • @@ -547,45 +547,45 @@ After that, restart Emacs with spc q r.

    Doom Config

    -
    (setq doom-font (font-spec :family "Hack Nerd Font Mono" :size 12 :weight 'semi-light)
    -      doom-variable-pitch-font (font-spec :family "Hack Nerd Font Mono")
    -      doom-unicode-font (font-spec :family "Hack Nerd Font Mono" :size 12)
    -      doom-big-font (font-spec :family "Hack Nerd Font Mono" :size 19))
    +
      (setq doom-font (font-spec :family "Hack Nerd Font Mono" :size 12 :weight 'semi-light)
    +        doom-variable-pitch-font (font-spec :family "Hack Nerd Font Mono")
    +        doom-unicode-font (font-spec :family "Hack Nerd Font Mono" :size 12)
    +        doom-big-font (font-spec :family "Hack Nerd Font Mono" :size 19))
     
    -
    (setq doom-theme 'leuven)
    +
     (setq doom-theme 'leuven)
     
    -
    (setq display-line-numbers-type t)
    +
      (setq display-line-numbers-type t)
     
    -
    (use-package doom-modeline
    -  :hook (after-init . doom-modeline-mode)
    -  :custom
    -  (doom-modeline-height 25)
    -  (doom-modeline-bar-width 1)
    -  (doom-modeline-icon t)
    -  (doom-modeline-major-mode-icon t)
    -  (doom-modeline-major-mode-color-icon t)
    -  (doom-modeline-buffer-file-name-style 'truncate-upto-project)
    -  (doom-modeline-buffer-state-icon t)
    -  (doom-modeline-buffer-modification-icon t)
    -  (doom-modeline-minor-modes nil)
    -  (doom-modeline-enable-word-count nil)
    -  (doom-modeline-buffer-encoding t)
    -  (doom-modeline-indent-info nil)
    -  (doom-modeline-checker-simple-format t)
    -  (doom-modeline-vcs-max-length 12)
    -  (doom-modeline-env-version t)
    -  (doom-modeline-irc-stylize 'identity)
    -  (doom-modeline-github-timer nil)
    -  (doom-modeline-gnus-timer nil))
    +
      (use-package doom-modeline
    +    :hook (after-init . doom-modeline-mode)
    +    :custom
    +    (doom-modeline-height 25)
    +    (doom-modeline-bar-width 1)
    +    (doom-modeline-icon t)
    +    (doom-modeline-major-mode-icon t)
    +    (doom-modeline-major-mode-color-icon t)
    +    (doom-modeline-buffer-file-name-style 'truncate-upto-project)
    +    (doom-modeline-buffer-state-icon t)
    +    (doom-modeline-buffer-modification-icon t)
    +    (doom-modeline-minor-modes nil)
    +    (doom-modeline-enable-word-count nil)
    +    (doom-modeline-buffer-encoding t)
    +    (doom-modeline-indent-info nil)
    +    (doom-modeline-checker-simple-format t)
    +    (doom-modeline-vcs-max-length 12)
    +    (doom-modeline-env-version t)
    +    (doom-modeline-irc-stylize 'identity)
    +    (doom-modeline-github-timer nil)
    +    (doom-modeline-gnus-timer nil))
     
    @@ -595,8 +595,8 @@ After that, restart Emacs with spc q r.

    Evil

    -
    (after! evil
    -  (map! :m  "-"  #'dired-jump))
    +
      (after! evil
    +    (map! :m  "-"  #'dired-jump))
     
    @@ -604,10 +604,10 @@ After that, restart Emacs with spc q r. Make movement keys work like they should

    -
    (define-key evil-normal-state-map (kbd "<remap> <evil-next-line>") 'evil-next-visual-line)
    -(define-key evil-normal-state-map (kbd "<remap> <evil-previous-line>") 'evil-previous-visual-line)
    -(define-key evil-motion-state-map (kbd "<remap> <evil-next-line>") 'evil-next-visual-line)
    -(define-key evil-motion-state-map (kbd "<remap> <evil-previous-line>") 'evil-previous-visual-line)
    +
      (define-key evil-normal-state-map (kbd "<remap> <evil-next-line>") 'evil-next-visual-line)
    +  (define-key evil-normal-state-map (kbd "<remap> <evil-previous-line>") 'evil-previous-visual-line)
    +  (define-key evil-motion-state-map (kbd "<remap> <evil-next-line>") 'evil-next-visual-line)
    +  (define-key evil-motion-state-map (kbd "<remap> <evil-previous-line>") 'evil-previous-visual-line)
     
    @@ -615,7 +615,7 @@ Make movement keys work like they should Make horizontal movement cross lines

    -
    (setq-default evil-cross-lines t)
    +
      (setq-default evil-cross-lines t)
     
    @@ -623,20 +623,20 @@ Make horizontal movement cross lines Evil Surround (not working):

    -
    ;; this macro was copied from here: https://stackoverflow.com/a/22418983/4921402
    -(defmacro define-and-bind-quoted-text-object (name key start-regex end-regex)
    -  (let ((inner-name (make-symbol (concat "evil-inner-" name)))
    -        (outer-name (make-symbol (concat "evil-a-" name))))
    -    `(progn
    -       (evil-define-text-object ,inner-name (count &optional beg end type)
    -         (evil-select-paren ,start-regex ,end-regex beg end type count nil))
    -       (evil-define-text-object ,outer-name (count &optional beg end type)
    -         (evil-select-paren ,start-regex ,end-regex beg end type count t))
    -       (define-key evil-inner-text-objects-map ,key #',inner-name)
    -       (define-key evil-outer-text-objects-map ,key #',outer-name))))
    +
      ;; this macro was copied from here: https://stackoverflow.com/a/22418983/4921402
    +  (defmacro define-and-bind-quoted-text-object (name key start-regex end-regex)
    +    (let ((inner-name (make-symbol (concat "evil-inner-" name)))
    +          (outer-name (make-symbol (concat "evil-a-" name))))
    +      `(progn
    +         (evil-define-text-object ,inner-name (count &optional beg end type)
    +           (evil-select-paren ,start-regex ,end-regex beg end type count nil))
    +         (evil-define-text-object ,outer-name (count &optional beg end type)
    +           (evil-select-paren ,start-regex ,end-regex beg end type count t))
    +         (define-key evil-inner-text-objects-map ,key #',inner-name)
    +         (define-key evil-outer-text-objects-map ,key #',outer-name))))
     
    -;; Add dollar as a surround object
    -(define-and-bind-quoted-text-object "dollar" "$" "\\$" "\\$")
    +  ;; Add dollar as a surround object
    +  (define-and-bind-quoted-text-object "dollar" "$" "\\$" "\\$")
     
    @@ -662,7 +662,7 @@ Evil Surround (not working): Automatic line wrap.

    -
    (global-visual-line-mode nil)
    +
      (global-visual-line-mode nil)
     
    @@ -670,13 +670,13 @@ Automatic line wrap. Turn off auto-fill mode that add line breaks.

    -
    (auto-fill-mode -1)
    -(remove-hook 'text-mode-hook #'turn-on-auto-fill)
    -(after! org
    -  ;; turn off auto-fill for org-mode
    -  (add-hook 'org-mode-hook 'turn-off-auto-fill))
    -(after! auctex
    -  (add-hook 'latex-mode-hook 'turn-off-auto-fill))
    +
      (auto-fill-mode -1)
    +  (remove-hook 'text-mode-hook #'turn-on-auto-fill)
    +  (after! org
    +    ;; turn off auto-fill for org-mode
    +    (add-hook 'org-mode-hook 'turn-off-auto-fill))
    +  (after! auctex
    +    (add-hook 'latex-mode-hook 'turn-off-auto-fill))
     
    @@ -686,15 +686,15 @@ Turn off auto-fill mode that add line breaks.

    Useful General Functions

    -
    (defun tdh-matlab-work ()
    -  "Setup Matlab Work Windows"
    -  (interactive)
    -  (delete-other-windows)
    -  (evil-window-vsplit)
    -  (evil-window-right 1)
    -  (switch-to-buffer "*MATLAB*")
    -  (evil-window-left 1)
    -  )
    +
      (defun tdh-matlab-work ()
    +    "Setup Matlab Work Windows"
    +    (interactive)
    +    (delete-other-windows)
    +    (evil-window-vsplit)
    +    (evil-window-right 1)
    +    (switch-to-buffer "*MATLAB*")
    +    (evil-window-left 1)
    +    )
     
    @@ -704,7 +704,7 @@ Turn off auto-fill mode that add line breaks.

    Change default alert backend

    -
    (setq alert-default-style 'libnotify)
    +
      (setq alert-default-style 'libnotify)
     
    @@ -714,7 +714,7 @@ Turn off auto-fill mode that add line breaks.

    Lockfiles

    -
    (setq create-lockfiles nil)
    +
      (setq create-lockfiles nil)
     
    @@ -724,14 +724,14 @@ Turn off auto-fill mode that add line breaks.

    Disable highlight of current line

    -
    (global-hl-line-mode -1)
    -(after! org
    -  (add-hook 'org-mode-hook
    -      (lambda()
    -          (hl-line-mode -1)
    -          (global-hl-line-mode -1))
    -      't
    -  ))
    +
      (global-hl-line-mode -1)
    +  (after! org
    +    (add-hook 'org-mode-hook
    +        (lambda()
    +            (hl-line-mode -1)
    +            (global-hl-line-mode -1))
    +        't
    +    ))
     
    @@ -741,10 +741,10 @@ Turn off auto-fill mode that add line breaks.

    Remap jump-forward key binding

    -
    (with-eval-after-load 'better-jumper
    -  (map!
    -  :desc "Jump Forward"
    -  "C-i" #'better-jumper-jump-forward))
    +
      (with-eval-after-load 'better-jumper
    +    (map!
    +    :desc "Jump Forward"
    +    "C-i" #'better-jumper-jump-forward))
     
    @@ -754,22 +754,22 @@ Turn off auto-fill mode that add line breaks.

    Magit

    -
    (setenv "GIT_ASKPASS" "git-gui--askpass")
    +
      (setenv "GIT_ASKPASS" "git-gui--askpass")
     
    -(after! magit
    -  (setq magit-diff-refine-hunk 'all)
    -  (setq magit-repository-directories `(("~/Cloud/thesis/matlab/" . 1)
    -                                       ("~/Cloud/thesis/papers/" . 1)))
    -  (setq magit-repolist-columns '(("Name" 25 magit-repolist-column-ident nil)
    -                                 ("Status" 7 magit-repolist-column-flag)
    -                                 ("B<U" 3 magit-repolist-column-unpulled-from-upstream
    -                                  ((:right-align t)
    -                                   (:help-echo "Upstream changes not in branch")))
    -                                 ("B>U" 3 magit-repolist-column-unpushed-to-upstream
    -                                  ((:right-align t)
    -                                   (:help-echo "Local changes not in upstream")))
    -                                 ("Path" 99 magit-repolist-column-path nil)))
    -  )
    +  (after! magit
    +    (setq magit-diff-refine-hunk 'all)
    +    (setq magit-repository-directories `(("~/Cloud/thesis/matlab/" . 1)
    +                                         ("~/Cloud/thesis/papers/" . 1)))
    +    (setq magit-repolist-columns '(("Name" 25 magit-repolist-column-ident nil)
    +                                   ("Status" 7 magit-repolist-column-flag)
    +                                   ("B<U" 3 magit-repolist-column-unpulled-from-upstream
    +                                    ((:right-align t)
    +                                     (:help-echo "Upstream changes not in branch")))
    +                                   ("B>U" 3 magit-repolist-column-unpushed-to-upstream
    +                                    ((:right-align t)
    +                                     (:help-echo "Local changes not in upstream")))
    +                                   ("Path" 99 magit-repolist-column-path nil)))
    +    )
     
    @@ -806,10 +806,10 @@ This works also with C-x C-q

    PDF-Tools

    -
    (use-package! pdf-tools
    -  :config
    -  (add-hook 'pdf-view-mode-hook (lambda() (linum-mode -1)))
    -  )
    +
      (use-package! pdf-tools
    +    :config
    +    (add-hook 'pdf-view-mode-hook (lambda() (linum-mode -1)))
    +    )
     
    @@ -819,8 +819,8 @@ This works also with C-x C-q

    Yassnippets

    -
    (push "~/.config/doom/snippets" yas-snippet-dirs)
    -(yas-global-mode 1)
    +
      (push "~/.config/doom/snippets" yas-snippet-dirs)
    +  (yas-global-mode 1)
     
    @@ -830,17 +830,17 @@ This works also with C-x C-q

    Ox-Hugo

    -
    (defun tdh-export-everything-to-hugo ()
    -  "Export all the .org files in the specified directory to markdown using Hugo"
    -  (interactive)
    -  (setq org-files (directory-files (read-directory-name "Directory:" "/home/thomas/Cloud/brain/") t "org$" t))
    +
      (defun tdh-export-everything-to-hugo ()
    +    "Export all the .org files in the specified directory to markdown using Hugo"
    +    (interactive)
    +    (setq org-files (directory-files (read-directory-name "Directory:" "/home/thomas/Cloud/brain/") t "org$" t))
     
    -  (while org-files
    -    (setq current-org-file (car org-files))
    -    (message "Exporting %s" current-org-file)
    -    (find-file current-org-file)
    -    (org-hugo-export-to-md)
    -    (setq org-files (cdr org-files))))
    +    (while org-files
    +      (setq current-org-file (car org-files))
    +      (message "Exporting %s" current-org-file)
    +      (find-file current-org-file)
    +      (org-hugo-export-to-md)
    +      (setq org-files (cdr org-files))))
     
    @@ -850,7 +850,7 @@ This works also with C-x C-q

    Others

    -
    (setq auto-save-default t)
    +
      (setq auto-save-default t)
     
    @@ -871,31 +871,31 @@ This works also with C-x C-q

    Org General Config

    -
    (setq org-directory "~/Cloud/org/")
    -(after! org
    -  (setq org-directory "~/Cloud/org/")
    +
      (setq org-directory "~/Cloud/org/")
    +  (after! org
    +    (setq org-directory "~/Cloud/org/")
     
    -  ;; Replace the content marker, “⋯”, with a nice unicode arrow.
    -  (setq org-ellipsis " ⤵")
    +    ;; Replace the content marker, “⋯”, with a nice unicode arrow.
    +    (setq org-ellipsis " ⤵")
     
    -  (setq org-default-notes-file "~/Cloud/org/refile.org")
    +    (setq org-default-notes-file "~/Cloud/org/refile.org")
     
    -  ;; Avoid accidentally editing folded regions, say by adding text after an Org “⋯”.
    -  (setq org-catch-invisible-edits 'show)
    +    ;; Avoid accidentally editing folded regions, say by adding text after an Org “⋯”.
    +    (setq org-catch-invisible-edits 'show)
     
    -  ;; The following setting hides blank lines between headings which keeps folded view nice and compact.
    -  (setq org-cycle-separator-lines 0)
    +    ;; The following setting hides blank lines between headings which keeps folded view nice and compact.
    +    (setq org-cycle-separator-lines 0)
     
    -  ;; Indent according to the outline structure
    -  (setq org-startup-indented t)
    -  (setq org-startup-folded t)
    +    ;; Indent according to the outline structure
    +    (setq org-startup-indented t)
    +    (setq org-startup-folded t)
     
    -  ;; Record the information of when the task was marked as DONE
    -  (setq org-log-done 'time)
    +    ;; Record the information of when the task was marked as DONE
    +    (setq org-log-done 'time)
     
    -  ;; begining of line on heading behavior
    -  (setq org-special-ctrl-a/e nil)
    -)
    +    ;; begining of line on heading behavior
    +    (setq org-special-ctrl-a/e nil)
    +  )
     
    @@ -903,8 +903,8 @@ This works also with C-x C-q TAB was changed to toggle only the visibility state of the current subtree, rather than cycle through it recursively. This can be reversed with:

    -
    (after! evil-org
    -  (remove-hook 'org-tab-first-hook #'+org-cycle-only-current-subtree-h))
    +
      (after! evil-org
    +    (remove-hook 'org-tab-first-hook #'+org-cycle-only-current-subtree-h))
     
    @@ -917,34 +917,34 @@ TAB was changed to toggle only the visibility state of the current subtree, rath Display the real size of images and not the one set with attr_latex: :width \linewidth for instance.

    -
    (after! org
    -  (setq org-image-actual-width t))
    +
      (after! org
    +    (setq org-image-actual-width t))
     
    -
    -

    Org Links

    -
    +
    +

    Org Links

    +
    -
    (after! org
    -  (setq org-link-abbrev-alist
    -    '(("bib" . "~/Cloud/brain/biblio/references.bib::%s")
    -      ("notes" . "~/Cloud/brain/%s.org")
    -      ("papers" . "~/Cloud/pdfs/%s.pdf")))
    -  )
    +
      (after! org
    +    (setq org-link-abbrev-alist
    +      '(("bib" . "~/Cloud/brain/biblio/references.bib::%s")
    +        ("notes" . "~/Cloud/brain/%s.org")
    +        ("papers" . "~/Cloud/pdfs/%s.pdf")))
    +    )
     
    -
    (defun tdh/pdf-link (filename)
    -  (start-process "" nil "zathura" (concat "~/Cloud/pdfs/" filename ".pdf"))
    -  "")
    +
      (defun tdh/pdf-link (filename)
    +    (start-process "" nil "zathura" (concat "~/Cloud/pdfs/" filename ".pdf"))
    +    "")
     
    -(after! org
    -  (org-link-set-parameters "pdf" :follow #'tdh/pdf-link)
    -  )
    +  (after! org
    +    (org-link-set-parameters "pdf" :follow #'tdh/pdf-link)
    +    )
     
    @@ -954,15 +954,15 @@ Display the real size of images and not the one set with attr_latex: :widt

    Org Tagging

    -
    (after! org
    -  ;; Align Tags and flush right
    -  (setq org-tags-column -78)
    -  ;; Tags with fast selection keys
    -  (setq org-tag-alist (quote (("@home" . ?h)
    -                              ("@work" . ?w)
    -                              ("@christophe" . ?c)
    -                              ("@veijo" . ?v))))
    -  )
    +
      (after! org
    +    ;; Align Tags and flush right
    +    (setq org-tags-column -78)
    +    ;; Tags with fast selection keys
    +    (setq org-tag-alist (quote (("@home" . ?h)
    +                                ("@work" . ?w)
    +                                ("@christophe" . ?c)
    +                                ("@veijo" . ?v))))
    +    )
     
    @@ -972,9 +972,9 @@ Display the real size of images and not the one set with attr_latex: :widt

    Org Refile

    -
    (after! org
    -  (setq org-refile-targets '((org-agenda-files . (:maxlevel . 6))))
    -  )
    +
      (after! org
    +    (setq org-refile-targets '((org-agenda-files . (:maxlevel . 6))))
    +    )
     
    @@ -984,33 +984,33 @@ Display the real size of images and not the one set with attr_latex: :widt

    Org TODO

    -
    (after! org
    -  ;; Tags with fast selection keys
    -  (setq org-todo-keywords '(
    -                            (sequence "TODO(t)" "NEXT(n)" "MAIL(m)" "|" "DONE(d)")
    -                            (sequence "READ(r)" "BKMK(b)" "EXER(x)" "|" "DONE(d)")
    -                            (sequence "WAIT(w@/!)" "SDAY(s)" "|" "CANC(c@/!)")
    -                            (sequence "QUES(q)" "|" "ANSW(a)")
    -                            (sequence "EXAM(e)" "IDEA(i)" "|")
    -                            ))
    +
      (after! org
    +    ;; Tags with fast selection keys
    +    (setq org-todo-keywords '(
    +                              (sequence "TODO(t)" "NEXT(n)" "MAIL(m)" "|" "DONE(d)")
    +                              (sequence "READ(r)" "BKMK(b)" "EXER(x)" "|" "DONE(d)")
    +                              (sequence "WAIT(w@/!)" "SDAY(s)" "|" "CANC(c@/!)")
    +                              (sequence "QUES(q)" "|" "ANSW(a)")
    +                              (sequence "EXAM(e)" "IDEA(i)" "|")
    +                              ))
     
    -  ;; Display of the keywords
    -  (setq org-todo-keyword-faces
    -        '(("TODO" . (:foreground "#cc241d" :weight bold)) ;; red
    -          ("EXER" . (:foreground "#cc241d" :weight bold)) ;; red
    -          ("NEXT" . (:foreground "#cc241d" :weight bold)) ;; red
    -          ("MAIL" . (:foreground "#cc241d" :weight bold)) ;; red
    -          ("READ" . (:foreground "#cc241d" :weight bold)) ;; red
    -          ("ANSW" . (:foreground "#689d6a" :weight bold)) ;; aqua
    -          ("DONE" . (:foreground "#689d6a" :weight bold)) ;; aqua
    -          ("WAIT" . (:foreground "#d65d0e" :weight bold)) ;; orange
    -          ("QUES" . (:foreground "#d79921" :weight bold)) ;; yellow
    -          ("CANC" . (:foreground "#a89984" :weight bold)) ;; grey
    -          ("SDAY" . (:foreground "#98971a" :weight bold)) ;; green
    -          ("BKMK" . (:foreground "#98971a" :weight bold)) ;; green
    -          ("IDEA" . (:foreground "#98971a" :weight bold)) ;; green
    -          ("EXAM" . (:foreground "#98971a" :weight bold)))) ;; green
    -  )
    +    ;; Display of the keywords
    +    (setq org-todo-keyword-faces
    +          '(("TODO" . (:foreground "#cc241d" :weight bold)) ;; red
    +            ("EXER" . (:foreground "#cc241d" :weight bold)) ;; red
    +            ("NEXT" . (:foreground "#cc241d" :weight bold)) ;; red
    +            ("MAIL" . (:foreground "#cc241d" :weight bold)) ;; red
    +            ("READ" . (:foreground "#cc241d" :weight bold)) ;; red
    +            ("ANSW" . (:foreground "#689d6a" :weight bold)) ;; aqua
    +            ("DONE" . (:foreground "#689d6a" :weight bold)) ;; aqua
    +            ("WAIT" . (:foreground "#d65d0e" :weight bold)) ;; orange
    +            ("QUES" . (:foreground "#d79921" :weight bold)) ;; yellow
    +            ("CANC" . (:foreground "#a89984" :weight bold)) ;; grey
    +            ("SDAY" . (:foreground "#98971a" :weight bold)) ;; green
    +            ("BKMK" . (:foreground "#98971a" :weight bold)) ;; green
    +            ("IDEA" . (:foreground "#98971a" :weight bold)) ;; green
    +            ("EXAM" . (:foreground "#98971a" :weight bold)))) ;; green
    +    )
     
    @@ -1025,50 +1025,50 @@ Archive subtrees under the same hierarchy as original in the archive files

    -
    (after! org
    -  (defadvice org-archive-subtree (around fix-hierarchy activate)
    -    (let* ((fix-archive-p (and (not current-prefix-arg)
    -                               (not (use-region-p))))
    -           (location (org-archive--compute-location org-archive-location))
    -           (afile (car location))
    -           (offset (if (= 0 (length (cdr location)))
    -                       1
    -                     (1+ (string-match "[^*]" (cdr location)))))
    -           (buffer (or (find-buffer-visiting afile) (find-file-noselect afile))))
    -      ad-do-it
    -      (when fix-archive-p
    -        (with-current-buffer buffer
    -          (goto-char (point-max))
    -          (while (> (org-current-level) offset) (org-up-heading-safe))
    -          (let* ((olpath (org-entry-get (point) "ARCHIVE_OLPATH"))
    -                 (path (and olpath (split-string olpath "/")))
    -                 (level offset)
    -                 tree-text)
    -            (when olpath
    -              (org-mark-subtree)
    -              (setq tree-text (buffer-substring (region-beginning) (region-end)))
    -              (let (this-command) (org-cut-subtree))
    -              (goto-char (point-min))
    -              (save-restriction
    -                (widen)
    -                (-each path
    -                  (lambda (heading)
    -                    (if (re-search-forward
    -                         (rx-to-string
    -                          `(: bol (repeat ,level "*") (1+ " ") ,heading)) nil t)
    -                        (org-narrow-to-subtree)
    -                      (goto-char (point-max))
    -                      (unless (looking-at "^")
    -                        (insert "\n"))
    -                      (insert (make-string level ?*)
    -                              " "
    -                              heading
    -                              "\n"))
    -                    (cl-incf level)))
    -                (widen)
    -                (org-end-of-subtree t t)
    -                (org-paste-subtree level tree-text))))))))
    -  )
    +
      (after! org
    +    (defadvice org-archive-subtree (around fix-hierarchy activate)
    +      (let* ((fix-archive-p (and (not current-prefix-arg)
    +                                 (not (use-region-p))))
    +             (location (org-archive--compute-location org-archive-location))
    +             (afile (car location))
    +             (offset (if (= 0 (length (cdr location)))
    +                         1
    +                       (1+ (string-match "[^*]" (cdr location)))))
    +             (buffer (or (find-buffer-visiting afile) (find-file-noselect afile))))
    +        ad-do-it
    +        (when fix-archive-p
    +          (with-current-buffer buffer
    +            (goto-char (point-max))
    +            (while (> (org-current-level) offset) (org-up-heading-safe))
    +            (let* ((olpath (org-entry-get (point) "ARCHIVE_OLPATH"))
    +                   (path (and olpath (split-string olpath "/")))
    +                   (level offset)
    +                   tree-text)
    +              (when olpath
    +                (org-mark-subtree)
    +                (setq tree-text (buffer-substring (region-beginning) (region-end)))
    +                (let (this-command) (org-cut-subtree))
    +                (goto-char (point-min))
    +                (save-restriction
    +                  (widen)
    +                  (-each path
    +                    (lambda (heading)
    +                      (if (re-search-forward
    +                           (rx-to-string
    +                            `(: bol (repeat ,level "*") (1+ " ") ,heading)) nil t)
    +                          (org-narrow-to-subtree)
    +                        (goto-char (point-max))
    +                        (unless (looking-at "^")
    +                          (insert "\n"))
    +                        (insert (make-string level ?*)
    +                                " "
    +                                heading
    +                                "\n"))
    +                      (cl-incf level)))
    +                  (widen)
    +                  (org-end-of-subtree t t)
    +                  (org-paste-subtree level tree-text))))))))
    +    )
     
    @@ -1081,33 +1081,33 @@ Archive subtrees under the same hierarchy as original in the archive files General configuration

    -
    (after! org
    -  ;; File to save todo items
    -  (setq org-agenda-files (list "~/Cloud/org/"))
    +
      (after! org
    +    ;; File to save todo items
    +    (setq org-agenda-files (list "~/Cloud/org/"))
     
    -  ;; Include archived files
    -  (setq org-agenda-archives-mode nil)
    +    ;; Include archived files
    +    (setq org-agenda-archives-mode nil)
     
    -  ;; Set priority range from A to C with default A
    -  (setq org-highest-priority ?A)
    -  (setq org-lowest-priority ?C)
    -  (setq org-default-priority ?C)
    +    ;; Set priority range from A to C with default A
    +    (setq org-highest-priority ?A)
    +    (setq org-lowest-priority ?C)
    +    (setq org-default-priority ?C)
     
    -  ;; Set colours for priorities
    -  (setq org-priority-faces '((?A . (:foreground "#FB4934"))
    -                             (?B . (:foreground "#FABD2F"))
    -                             (?C . (:foreground "#98971A"))))
    +    ;; Set colours for priorities
    +    (setq org-priority-faces '((?A . (:foreground "#FB4934"))
    +                               (?B . (:foreground "#FABD2F"))
    +                               (?C . (:foreground "#98971A"))))
     
    -  ;; Open agenda in current window
    -  (setq org-agenda-window-setup 'current-window)
    +    ;; Open agenda in current window
    +    (setq org-agenda-window-setup 'current-window)
     
    -  (setq org-agenda-prefix-format
    -        '((agenda  . "  %?-12t% s")
    -          (todo  . "") ;; Don't show the filename for reading agenda
    -          (tags  . " %-12:c")
    -          (search . " %-12:c"))
    -        )
    -  )
    +    (setq org-agenda-prefix-format
    +          '((agenda  . "  %?-12t% s")
    +            (todo  . "") ;; Don't show the filename for reading agenda
    +            (tags  . " %-12:c")
    +            (search . " %-12:c"))
    +          )
    +    )
     
    @@ -1115,85 +1115,85 @@ General configuration Org Agenda Custom Views

    -
    (after! org-agenda
    -  (defun tdh-org-agenda-skip-scheduled ()
    -    (org-agenda-skip-entry-if 'scheduled 'deadline 'regexp "\n]+>"))
    +
      (after! org-agenda
    +    (defun tdh-org-agenda-skip-scheduled ()
    +      (org-agenda-skip-entry-if 'scheduled 'deadline 'regexp "\n]+>"))
     
    -  (setq org-agenda-custom-commands
    -        '(("w" "Work"
    -           ((org-ql-block '(and (tags "@work")
    -                                (todo "TODO")
    -                                (priority "A"))
    -                          ((org-ql-block-header "Important TODOs")))
    -            (org-ql-block '(and (tags "@work")
    -                                (todo "TODO")
    -                                (priority "B"))
    -                          ((org-ql-block-header "TODOs")))
    -            (org-ql-block '(and (tags "@work")
    -                                (todo "TODO")
    -                                (priority "C"))
    -                          ((org-ql-block-header "Not important TODOs")))))
    -          ("h" "Home"
    -           ((org-ql-block '(and (tags "@home")
    -                                (todo "TODO")
    -                                (priority "A"))
    -                          ((org-ql-block-header "Things to do")))
    -            (org-ql-block '(and (tags "@home")
    -                                (todo "TODO")
    -                                (priority "B"))
    -                          ((org-ql-block-header "Things to do")))
    -            (org-ql-block '(and (tags "@home")
    -                                (todo "TODO")
    -                                (priority "C"))
    -                          ((org-ql-block-header "Things to do")))))
    -          ("q" "Questions to ask"
    -           ((org-ql-block '(and (todo "QUES")
    -                                (tags "@christophe"))
    -                          ((org-ql-block-header "Questions to Christophe")))
    -            (org-ql-block '(and (todo "QUES")
    -                                (tags "@veijo"))
    -                          ((org-ql-block-header "Questions to Veijo")))
    -            (org-ql-block '(and (todo "QUES")
    -                                (not (tags "@veijo" "@christophe")))
    -                          ((org-ql-block-header "Other Questions")))))
    -          ("R" "Already read Articles and Books"
    -           ((org-ql-block '(and (todo "DONE")
    -                                (level 1)
    -                                (tags "article" "inproceedings" "techreport" "inbook"))
    -                          ((org-ql-block-header "Articles")))
    -            (org-ql-block '(and (todo "DONE")
    -                                (level 1)
    -                                (tags "book"))
    -                          ((org-ql-block-header "Books")))
    -            (org-ql-block '(and (todo "DONE")
    -                                (level 1)
    -                                (tags "phdthesis"))
    -                          ((org-ql-block-header "Phd Thesis")))
    -            (org-ql-block '(and (todo "DONE")
    -                                (level 1)
    -                                (not (tags "article" "inproceedings" "techreport" "inbook" "book" "phdthesis")))
    -                          ((org-ql-block-header "Other Things"))))
    -           ((org-agenda-files '("~/Cloud/brain/"))))
    -          ("r" "Articles and Books to read"
    -           ((org-ql-block '(and (todo "READ")
    -                                (level 1)
    -                                (tags "article" "inproceedings" "techreport" "inbook"))
    -                          ((org-ql-block-header "Article to Read")))
    -            (org-ql-block '(and (todo "READ")
    -                                (level 1)
    -                                (tags "book"))
    -                          ((org-ql-block-header "Books to Read")))
    -            (org-ql-block '(and (todo "READ")
    -                                (level 1)
    -                                (tags "phdthesis"))
    -                          ((org-ql-block-header "Phd Thesis to Read")))
    -            (org-ql-block '(and (todo "READ")
    -                                (level 1)
    -                                (not (tags "article" "inproceedings" "techreport" "inbook" "book" "phdthesis")))
    -                          ((org-ql-block-header "Other Things to Read"))))
    -           ((org-agenda-files '("~/Cloud/brain/")))))
    -        )
    -  )
    +    (setq org-agenda-custom-commands
    +          '(("w" "Work"
    +             ((org-ql-block '(and (tags "@work")
    +                                  (todo "TODO")
    +                                  (priority "A"))
    +                            ((org-ql-block-header "Important TODOs")))
    +              (org-ql-block '(and (tags "@work")
    +                                  (todo "TODO")
    +                                  (priority "B"))
    +                            ((org-ql-block-header "TODOs")))
    +              (org-ql-block '(and (tags "@work")
    +                                  (todo "TODO")
    +                                  (priority "C"))
    +                            ((org-ql-block-header "Not important TODOs")))))
    +            ("h" "Home"
    +             ((org-ql-block '(and (tags "@home")
    +                                  (todo "TODO")
    +                                  (priority "A"))
    +                            ((org-ql-block-header "Things to do")))
    +              (org-ql-block '(and (tags "@home")
    +                                  (todo "TODO")
    +                                  (priority "B"))
    +                            ((org-ql-block-header "Things to do")))
    +              (org-ql-block '(and (tags "@home")
    +                                  (todo "TODO")
    +                                  (priority "C"))
    +                            ((org-ql-block-header "Things to do")))))
    +            ("q" "Questions to ask"
    +             ((org-ql-block '(and (todo "QUES")
    +                                  (tags "@christophe"))
    +                            ((org-ql-block-header "Questions to Christophe")))
    +              (org-ql-block '(and (todo "QUES")
    +                                  (tags "@veijo"))
    +                            ((org-ql-block-header "Questions to Veijo")))
    +              (org-ql-block '(and (todo "QUES")
    +                                  (not (tags "@veijo" "@christophe")))
    +                            ((org-ql-block-header "Other Questions")))))
    +            ("R" "Already read Articles and Books"
    +             ((org-ql-block '(and (todo "DONE")
    +                                  (level 1)
    +                                  (tags "article" "inproceedings" "techreport" "inbook"))
    +                            ((org-ql-block-header "Articles")))
    +              (org-ql-block '(and (todo "DONE")
    +                                  (level 1)
    +                                  (tags "book"))
    +                            ((org-ql-block-header "Books")))
    +              (org-ql-block '(and (todo "DONE")
    +                                  (level 1)
    +                                  (tags "phdthesis"))
    +                            ((org-ql-block-header "Phd Thesis")))
    +              (org-ql-block '(and (todo "DONE")
    +                                  (level 1)
    +                                  (not (tags "article" "inproceedings" "techreport" "inbook" "book" "phdthesis")))
    +                            ((org-ql-block-header "Other Things"))))
    +             ((org-agenda-files '("~/Cloud/brain/"))))
    +            ("r" "Articles and Books to read"
    +             ((org-ql-block '(and (todo "READ")
    +                                  (level 1)
    +                                  (tags "article" "inproceedings" "techreport" "inbook"))
    +                            ((org-ql-block-header "Article to Read")))
    +              (org-ql-block '(and (todo "READ")
    +                                  (level 1)
    +                                  (tags "book"))
    +                            ((org-ql-block-header "Books to Read")))
    +              (org-ql-block '(and (todo "READ")
    +                                  (level 1)
    +                                  (tags "phdthesis"))
    +                            ((org-ql-block-header "Phd Thesis to Read")))
    +              (org-ql-block '(and (todo "READ")
    +                                  (level 1)
    +                                  (not (tags "article" "inproceedings" "techreport" "inbook" "book" "phdthesis")))
    +                            ((org-ql-block-header "Other Things to Read"))))
    +             ((org-agenda-files '("~/Cloud/brain/")))))
    +          )
    +    )
     
    @@ -1203,9 +1203,9 @@ Org Agenda Custom Views

    Org Fancy Priority

    -
    (use-package! org-fancy-priorities ; priority icons
    -  :hook (org-mode . org-fancy-priorities-mode)
    -  :config (setq org-fancy-priorities-list '("■" "■" "■")))
    +
      (use-package! org-fancy-priorities ; priority icons
    +    :hook (org-mode . org-fancy-priorities-mode)
    +    :config (setq org-fancy-priorities-list '("■" "■" "■")))
     
    @@ -1219,25 +1219,25 @@ Org Agenda Custom Views

    -
    (after! org-agenda
    -  (setq appt-message-warning-time 5)
    -  (defun tdh-org-agenda-to-appt ()
    -    (interactive)
    -    (setq appt-time-msg-list nil)
    -    (org-agenda-to-appt))
    +
      (after! org-agenda
    +    (setq appt-message-warning-time 5)
    +    (defun tdh-org-agenda-to-appt ()
    +      (interactive)
    +      (setq appt-time-msg-list nil)
    +      (org-agenda-to-appt))
     
    -  (tdh-org-agenda-to-appt)
    -                                        ; Display appointments as a window manager notification
    -  (setq appt-disp-window-function 'tdh-appt-display)
    -  (setq appt-delete-window-function (lambda () t))
    +    (tdh-org-agenda-to-appt)
    +                                          ; Display appointments as a window manager notification
    +    (setq appt-disp-window-function 'tdh-appt-display)
    +    (setq appt-delete-window-function (lambda () t))
     
    -  (setq tdh-appt-notification-app (concat (getenv "HOME") "/bin/appt-notification"))
    -  (defun tdh-appt-display (min-to-app new-time msg)
    -    (if (atom min-to-app)
    -        (start-process "tdh-appt-notification-app" nil tdh-appt-notification-app min-to-app msg)
    -      (dolist (i (number-sequence 0 (1- (length min-to-app))))
    -        (start-process "tdh-appt-notification-app" nil tdh-appt-notification-app (nth i min-to-app) (nth i msg)))))
    -  )
    +    (setq tdh-appt-notification-app (concat (getenv "HOME") "/bin/appt-notification"))
    +    (defun tdh-appt-display (min-to-app new-time msg)
    +      (if (atom min-to-app)
    +          (start-process "tdh-appt-notification-app" nil tdh-appt-notification-app min-to-app msg)
    +        (dolist (i (number-sequence 0 (1- (length min-to-app))))
    +          (start-process "tdh-appt-notification-app" nil tdh-appt-notification-app (nth i min-to-app) (nth i msg)))))
    +    )
     
    @@ -1246,10 +1246,10 @@ Org Agenda Custom Views

    appt-notification script

    -
    TIME="$1"TODO
    -MSG="$2"
    +
      TIME="$1"TODO
    +  MSG="$2"
     
    -dunstify --replace=85401 "Event in $TIME minutes" "$MSG"
    +  dunstify --replace=85401 "Event in $TIME minutes" "$MSG"
     
    @@ -1260,31 +1260,31 @@ dunstify --replace=85401 Org Structure Template
    -
    (after! org
    -  (require 'org-tempo)
    -  (setq org-structure-template-alist
    -    '(("c" . "center")
    -      ("C" . "comment")
    -      ("mm" . "src matlab")
    -      ("mf" . "src matlab :exports none")
    -      ("mv" . "src matlab :results value replace :exports none :tangle no")
    -      ("l" . "src emacs-lisp")
    -      ("q" . "quote")
    -      ("s" . "src")
    -      ("ba" . "answer")
    -      ("bd" . "definition")
    -      ("be" . "exampl")
    -      ("bx" . "exercice")
    -      ("bq" . "question")
    -      ("bs" . "summary")
    -      ("bS" . "seealso")
    -      ("bh" . "hint")
    -      ("bn" . "note")
    -      ("bi" . "important")
    -      ("bc" . "caution")
    -      ("bw" . "warning")
    -      ))
    -)
    +
      (after! org
    +    (require 'org-tempo)
    +    (setq org-structure-template-alist
    +      '(("c" . "center")
    +        ("C" . "comment")
    +        ("mm" . "src matlab")
    +        ("mf" . "src matlab :exports none")
    +        ("mv" . "src matlab :results value replace :exports none :tangle no")
    +        ("l" . "src emacs-lisp")
    +        ("q" . "quote")
    +        ("s" . "src")
    +        ("ba" . "answer")
    +        ("bd" . "definition")
    +        ("be" . "exampl")
    +        ("bx" . "exercice")
    +        ("bq" . "question")
    +        ("bs" . "summary")
    +        ("bS" . "seealso")
    +        ("bh" . "hint")
    +        ("bn" . "note")
    +        ("bi" . "important")
    +        ("bc" . "caution")
    +        ("bw" . "warning")
    +        ))
    +  )
     
    @@ -1303,55 +1303,55 @@ Documentation:
-
(after! org
-  (setq org-capture-templates
-        (quote (("t"    ; key
-                 "Todo" ; name
-                 entry  ; type
-                 (file+headline "~/Cloud/org/work-notebook.org" "Inbox") ; target
-                 "** TODO %?\n%U\n" ; template
-                 )
-                ("M"    ; key
-                 "Meeting" ; name
-                 entry  ; type
-                 (file+headline "~/Cloud/org/work-notebook.org" "Meetings") ; target
-                 "** %?\n%(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n" ; template
-                 )
-                ("m"    ; key
-                 "Mail" ; name
-                 entry  ; type
-                 (file+headline "~/Cloud/org/work-notebook.org" "Mails") ; target
-                 "** TODO [#A] %?\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n%a\n" ; template
-                 )
-                ("r"    ; key
-                 "Reference" ; name
-                 entry  ; type
-                 (file+headline "~/Cloud/org/inbox-ereader.org" "Things to Read") ; target
-                 "** TODO [#B] %?\n" ; template
-                 )
-                ("pm"
-                 "Org-Protocol Mail"
-                 entry
-                 (file+headline "~/Cloud/org/work-notebook.org" "Mails")
-                 "* MAIL %:description [[message:%:link][link]]\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n\n"
-                 :immediate-finish t
-                 )
-                ("pu"
-                 "Org-Protocol Url"
-                 entry
-                 (file+headline "~/Cloud/org/work-notebook.org" "Inbox")
-                 "* [[%:link][%:description]]\nCaptured On: %U\n\n"
-                 :immediate-finish t
-                 )
-                ("pt"
-                 "Org-Protocol text"
-                 entry
-                 (file+headline "~/Cloud/org/work-notebook.org" "Inbox")
-                 "* %:description\nSource: %:link\nCaptured On: %U\n\n#+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n"
-                 :immediate-finish t
-                 )
-                )))
-  )
+
  (after! org
+    (setq org-capture-templates
+          (quote (("t"    ; key
+                   "Todo" ; name
+                   entry  ; type
+                   (file+headline "~/Cloud/org/work-notebook.org" "Inbox") ; target
+                   "** TODO %?\n%U\n" ; template
+                   )
+                  ("M"    ; key
+                   "Meeting" ; name
+                   entry  ; type
+                   (file+headline "~/Cloud/org/work-notebook.org" "Meetings") ; target
+                   "** %?\n%(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n" ; template
+                   )
+                  ("m"    ; key
+                   "Mail" ; name
+                   entry  ; type
+                   (file+headline "~/Cloud/org/work-notebook.org" "Mails") ; target
+                   "** TODO [#A] %?\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n%a\n" ; template
+                   )
+                  ("r"    ; key
+                   "Reference" ; name
+                   entry  ; type
+                   (file+headline "~/Cloud/org/inbox-ereader.org" "Things to Read") ; target
+                   "** TODO [#B] %?\n" ; template
+                   )
+                  ("pm"
+                   "Org-Protocol Mail"
+                   entry
+                   (file+headline "~/Cloud/org/work-notebook.org" "Mails")
+                   "* MAIL %:description [[message:%:link][link]]\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n\n"
+                   :immediate-finish t
+                   )
+                  ("pu"
+                   "Org-Protocol Url"
+                   entry
+                   (file+headline "~/Cloud/org/work-notebook.org" "Inbox")
+                   "* [[%:link][%:description]]\nCaptured On: %U\n\n"
+                   :immediate-finish t
+                   )
+                  ("pt"
+                   "Org-Protocol text"
+                   entry
+                   (file+headline "~/Cloud/org/work-notebook.org" "Inbox")
+                   "* %:description\nSource: %:link\nCaptured On: %U\n\n#+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n"
+                   :immediate-finish t
+                   )
+                  )))
+    )
 
@@ -1364,16 +1364,16 @@ Documentation: Basic configuration:

-
(after! org
-  ;; How many levels of headline to export
-  (setq org-export-headline-levels 4)
+
  (after! org
+    ;; How many levels of headline to export
+    (setq org-export-headline-levels 4)
 
-  ;; Authorize BIND to set local variables
-  (setq org-export-allow-bind-keywords t)
+    ;; Authorize BIND to set local variables
+    (setq org-export-allow-bind-keywords t)
 
-  ;; Use doc instead of odt
-  (setq org-odt-preferred-output-format "doc")
-  )
+    ;; Use doc instead of odt
+    (setq org-odt-preferred-output-format "doc")
+    )
 
@@ -1381,15 +1381,15 @@ Basic configuration: Some defaults:

-
(after! org
-  (setq org-export-with-author t)
-  (setq org-export-with-creator nil)
-  (setq org-export-with-date t)
-  (setq org-export-with-toc t)
-  (setq org-export-with-drawers nil)
-  (setq org-export-with-sub-superscripts nil)
-  (setq org-export-with-todo-keywords nil)
-  )
+
  (after! org
+    (setq org-export-with-author t)
+    (setq org-export-with-creator nil)
+    (setq org-export-with-date t)
+    (setq org-export-with-toc t)
+    (setq org-export-with-drawers nil)
+    (setq org-export-with-sub-superscripts nil)
+    (setq org-export-with-todo-keywords nil)
+    )
 
@@ -1397,10 +1397,10 @@ Some defaults: Do not export headline with the :ignore: tag:

-
;; Used to not export headings with :ignore: tag
-(after! org
-  (require 'ox-extra)
-  (ox-extras-activate '(ignore-headlines)))
+
  ;; Used to not export headings with :ignore: tag
+  (after! org
+    (require 'ox-extra)
+    (ox-extras-activate '(ignore-headlines)))
 
@@ -1414,23 +1414,23 @@ Do not export headline with the :ignore: tag:

HTML Defaults

-
(after! org
-  (setq org-html-head "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">")
-  (setq org-html-head-extra "")
+
  (after! org
+    (setq org-html-head "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">")
+    (setq org-html-head-extra "")
 
-  (setq org-html-head-include-default-style nil)
-  (setq org-html-head-include-scripts nil)
+    (setq org-html-head-include-default-style nil)
+    (setq org-html-head-include-scripts nil)
 
-  (setq org-html-viewport nil)
+    (setq org-html-viewport nil)
 
-  (setq org-html-html5-fancy t)
-  (setq org-html-doctype "xhtml-strict")
+    (setq org-html-html5-fancy t)
+    (setq org-html-doctype "xhtml-strict")
 
-  (setq org-html-wrap-src-lines nil)
+    (setq org-html-wrap-src-lines nil)
 
-  ;; Export with css class instead of inline css
-  (setq org-html-htmlize-output-type 'css)
-  )
+    ;; Export with css class instead of inline css
+    (setq org-html-htmlize-output-type 'css)
+    )
 
@@ -1440,29 +1440,29 @@ Do not export headline with the :ignore: tag:

MathJax

-
(after! org
-  (setq org-html-mathjax-template
-        "<script>MathJax = {
-          tex: {
-            tags: 'ams',
-            macros: {bm: [\"\\\\boldsymbol{#1}\",1],}
-            }
-          };
-          </script>
-          <script type=\"text/javascript\" src=\"%PATH\"></script>")
+
  (after! org
+    (setq org-html-mathjax-template
+          "<script>MathJax = {
+            tex: {
+              tags: 'ams',
+              macros: {bm: [\"\\\\boldsymbol{#1}\",1],}
+              }
+            };
+            </script>
+            <script type=\"text/javascript\" src=\"%PATH\"></script>")
 
-  (setq org-html-mathjax-options
-        '((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js")
-          (scale "100")
-          (align "center")
-          (font "TeX")
-          (linebreaks "false")
-          (autonumber "AMS")
-          (indent "0em")
-          (multlinewidth "85%")
-          (tagindent ".8em")
-          (tagside "right")))
-  )
+    (setq org-html-mathjax-options
+          '((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js")
+            (scale "100")
+            (align "center")
+            (font "TeX")
+            (linebreaks "false")
+            (autonumber "AMS")
+            (indent "0em")
+            (multlinewidth "85%")
+            (tagindent ".8em")
+            (tagside "right")))
+    )
 
@@ -1472,20 +1472,20 @@ Do not export headline with the :ignore: tag:

MP4 Video - video link

-
(defun org-video-link-export (path desc backend)
-  (let ((ext (file-name-extension path)))
-    (cond
-     ((eq 'html backend)
-      (format "<video preload='metadata' controls='controls'><source type='video/%s' src='%s' /></video>" ext path))
-     ;; fall-through case for everything else
-     (t
-      path))))
+
  (defun org-video-link-export (path desc backend)
+    (let ((ext (file-name-extension path)))
+      (cond
+       ((eq 'html backend)
+        (format "<video preload='metadata' controls='controls'><source type='video/%s' src='%s' /></video>" ext path))
+       ;; fall-through case for everything else
+       (t
+        path))))
 
-(after! org
-  (org-link-set-parameters "video" :export 'org-video-link-export)
+  (after! org
+    (org-link-set-parameters "video" :export 'org-video-link-export)
 
-  (org-export-string-as "video:xxx.mp4" 'html t)
-  )
+    (org-export-string-as "video:xxx.mp4" 'html t)
+    )
 
@@ -1504,91 +1504,91 @@ This is not working

-
(define-minor-mode unpackaged/org-export-html-with-useful-ids-mode
-  "Attempt to export Org as HTML with useful link IDs.
-Instead of random IDs like \"#orga1b2c3\", use heading titles,
-made unique when necessary."
-  :global t
-  (if unpackaged/org-export-html-with-useful-ids-mode
-      (advice-add #'org-export-get-reference :override #'unpackaged/org-export-get-reference)
-    (advice-remove #'org-export-get-reference #'unpackaged/org-export-get-reference)))
+
  (define-minor-mode unpackaged/org-export-html-with-useful-ids-mode
+    "Attempt to export Org as HTML with useful link IDs.
+  Instead of random IDs like \"#orga1b2c3\", use heading titles,
+  made unique when necessary."
+    :global t
+    (if unpackaged/org-export-html-with-useful-ids-mode
+        (advice-add #'org-export-get-reference :override #'unpackaged/org-export-get-reference)
+      (advice-remove #'org-export-get-reference #'unpackaged/org-export-get-reference)))
 
-(defun unpackaged/org-export-get-reference (datum info)
-  "Like `org-export-get-reference', except uses heading titles instead of random numbers."
-  (let ((cache (plist-get info :internal-references)))
-    (or (car (rassq datum cache))
-        (let* ((crossrefs (plist-get info :crossrefs))
-               (cells (org-export-search-cells datum))
-               ;; Preserve any pre-existing association between
-               ;; a search cell and a reference, i.e., when some
-               ;; previously published document referenced a location
-               ;; within current file (see
-               ;; `org-publish-resolve-external-link').
-               ;;
-               ;; However, there is no guarantee that search cells are
-               ;; unique, e.g., there might be duplicate custom ID or
-               ;; two headings with the same title in the file.
-               ;;
-               ;; As a consequence, before re-using any reference to
-               ;; an element or object, we check that it doesn't refer
-               ;; to a previous element or object.
-               (new (or (cl-some
-                         (lambda (cell)
-                           (let ((stored (cdr (assoc cell crossrefs))))
-                             (when stored
-                               (let ((old (org-export-format-reference stored)))
-                                 (and (not (assoc old cache)) stored)))))
-                         cells)
-                        (when (org-element-property :raw-value datum)
-                          ;; Heading with a title
-                          (unpackaged/org-export-new-title-reference datum cache))
-                        ;; NOTE: This probably breaks some Org Export
-                        ;; feature, but if it does what I need, fine.
-                        (org-export-format-reference
-                         (org-export-new-reference cache))))
-               (reference-string new))
-          ;; Cache contains both data already associated to
-          ;; a reference and in-use internal references, so as to make
-          ;; unique references.
-          (dolist (cell cells) (push (cons cell new) cache))
-          ;; Retain a direct association between reference string and
-          ;; DATUM since (1) not every object or element can be given
-          ;; a search cell (2) it permits quick lookup.
-          (push (cons reference-string datum) cache)
-          (plist-put info :internal-references cache)
-          reference-string))))
+  (defun unpackaged/org-export-get-reference (datum info)
+    "Like `org-export-get-reference', except uses heading titles instead of random numbers."
+    (let ((cache (plist-get info :internal-references)))
+      (or (car (rassq datum cache))
+          (let* ((crossrefs (plist-get info :crossrefs))
+                 (cells (org-export-search-cells datum))
+                 ;; Preserve any pre-existing association between
+                 ;; a search cell and a reference, i.e., when some
+                 ;; previously published document referenced a location
+                 ;; within current file (see
+                 ;; `org-publish-resolve-external-link').
+                 ;;
+                 ;; However, there is no guarantee that search cells are
+                 ;; unique, e.g., there might be duplicate custom ID or
+                 ;; two headings with the same title in the file.
+                 ;;
+                 ;; As a consequence, before re-using any reference to
+                 ;; an element or object, we check that it doesn't refer
+                 ;; to a previous element or object.
+                 (new (or (cl-some
+                           (lambda (cell)
+                             (let ((stored (cdr (assoc cell crossrefs))))
+                               (when stored
+                                 (let ((old (org-export-format-reference stored)))
+                                   (and (not (assoc old cache)) stored)))))
+                           cells)
+                          (when (org-element-property :raw-value datum)
+                            ;; Heading with a title
+                            (unpackaged/org-export-new-title-reference datum cache))
+                          ;; NOTE: This probably breaks some Org Export
+                          ;; feature, but if it does what I need, fine.
+                          (org-export-format-reference
+                           (org-export-new-reference cache))))
+                 (reference-string new))
+            ;; Cache contains both data already associated to
+            ;; a reference and in-use internal references, so as to make
+            ;; unique references.
+            (dolist (cell cells) (push (cons cell new) cache))
+            ;; Retain a direct association between reference string and
+            ;; DATUM since (1) not every object or element can be given
+            ;; a search cell (2) it permits quick lookup.
+            (push (cons reference-string datum) cache)
+            (plist-put info :internal-references cache)
+            reference-string))))
 
-(defun unpackaged/org-export-new-title-reference (datum cache)
-  "Return new reference for DATUM that is unique in CACHE."
-  (cl-macrolet ((inc-suffixf (place)
-                             `(progn
-                                (string-match (rx bos
-                                                  (minimal-match (group (1+ anything)))
-                                                  (optional "--" (group (1+ digit)))
-                                                  eos)
-                                              ,place)
-                                ;; HACK: `s1' instead of a gensym.
-                                (-let* (((s1 suffix) (list (match-string 1 ,place)
-                                                           (match-string 2 ,place)))
-                                        (suffix (if suffix
-                                                    (string-to-number suffix)
-                                                  0)))
-                                  (setf ,place (format "%s--%s" s1 (cl-incf suffix)))))))
-    (let* ((title (org-element-property :raw-value datum))
-           (ref (url-hexify-string (substring-no-properties title)))
-           (parent (org-element-property :parent datum)))
-      (while (--any (equal ref (car it))
-                    cache)
-        ;; Title not unique: make it so.
-        (if parent
-            ;; Append ancestor title.
-            (setf title (concat (org-element-property :raw-value parent)
-                                "--" title)
-                  ref (url-hexify-string (substring-no-properties title))
-                  parent (org-element-property :parent parent))
-          ;; No more ancestors: add and increment a number.
-          (inc-suffixf ref)))
-      ref)))
+  (defun unpackaged/org-export-new-title-reference (datum cache)
+    "Return new reference for DATUM that is unique in CACHE."
+    (cl-macrolet ((inc-suffixf (place)
+                               `(progn
+                                  (string-match (rx bos
+                                                    (minimal-match (group (1+ anything)))
+                                                    (optional "--" (group (1+ digit)))
+                                                    eos)
+                                                ,place)
+                                  ;; HACK: `s1' instead of a gensym.
+                                  (-let* (((s1 suffix) (list (match-string 1 ,place)
+                                                             (match-string 2 ,place)))
+                                          (suffix (if suffix
+                                                      (string-to-number suffix)
+                                                    0)))
+                                    (setf ,place (format "%s--%s" s1 (cl-incf suffix)))))))
+      (let* ((title (org-element-property :raw-value datum))
+             (ref (url-hexify-string (substring-no-properties title)))
+             (parent (org-element-property :parent datum)))
+        (while (--any (equal ref (car it))
+                      cache)
+          ;; Title not unique: make it so.
+          (if parent
+              ;; Append ancestor title.
+              (setf title (concat (org-element-property :raw-value parent)
+                                  "--" title)
+                    ref (url-hexify-string (substring-no-properties title))
+                    parent (org-element-property :parent parent))
+            ;; No more ancestors: add and increment a number.
+            (inc-suffixf ref)))
+        ref)))
 
@@ -1601,47 +1601,47 @@ This is not working Adapt this from https://github.com/alhassy/emacs.d to do something similar for source blocks.

-
(defun my/org-drawer-format (name contents)
-  "Export to HTML the drawers named with prefix ‘fold_’, ignoring case.
+
  (defun my/org-drawer-format (name contents)
+    "Export to HTML the drawers named with prefix ‘fold_’, ignoring case.
 
-The resulting drawer is a ‘code-details’ and so appears folded;
-the user clicks it to see the information therein.
-Henceforth, these are called ‘fold drawers’.
+  The resulting drawer is a ‘code-details’ and so appears folded;
+  the user clicks it to see the information therein.
+  Henceforth, these are called ‘fold drawers’.
 
-Drawers without such a prefix may be nonetheless exported if their
-body contains ‘:export: t’ ---this switch does not appear in the output.
-Thus, we are biased to generally not exporting non-fold drawers.
+  Drawers without such a prefix may be nonetheless exported if their
+  body contains ‘:export: t’ ---this switch does not appear in the output.
+  Thus, we are biased to generally not exporting non-fold drawers.
 
-One may suspend export of fold drawers by having ‘:export: nil’
-in their body definition.
+  One may suspend export of fold drawers by having ‘:export: nil’
+  in their body definition.
 
-Fold drawers naturally come with a title.
-Either it is specfied in the drawer body by ‘:title: ⋯’,
-or otherwise the drawer's name is used with all underscores replaced
-by spaces.
-"
-  (let* ((contents′ (replace-regexp-in-string ":export:.*\n?" "" contents))
-         (fold? (s-prefix? "fold_" name 'ignore-case))
-         (export? (string-match ":export:\s+t" contents))
-         (not-export? (string-match ":export:\s+nil" contents))
-         (title′ (and (string-match ":title:\\(.*\\)\n" contents)
-                      (match-string 1 contents))))
+  Fold drawers naturally come with a title.
+  Either it is specfied in the drawer body by ‘:title: ⋯’,
+  or otherwise the drawer's name is used with all underscores replaced
+  by spaces.
+  "
+    (let* ((contents′ (replace-regexp-in-string ":export:.*\n?" "" contents))
+           (fold? (s-prefix? "fold_" name 'ignore-case))
+           (export? (string-match ":export:\s+t" contents))
+           (not-export? (string-match ":export:\s+nil" contents))
+           (title′ (and (string-match ":title:\\(.*\\)\n" contents)
+                        (match-string 1 contents))))
 
-    ;; Ensure we have a title.
-    (unless title′ (setq title′ (s-join " " (cdr (s-split "_" name)))))
+      ;; Ensure we have a title.
+      (unless title′ (setq title′ (s-join " " (cdr (s-split "_" name)))))
 
-    ;; Output
-    (cond
-     ((and export? (not fold?)) contents′)
-     (not-export? nil)
-     (fold?
-      (thread-last contents′
-        (replace-regexp-in-string ":title:.*\n" "")
-        (format "<details class=\"code-details\"> <summary> <strong>
-            <font face=\"Courier\" size=\"3\" color=\"green\"> %s
-            </font> </strong> </summary> %s </details>" title′))))))
+      ;; Output
+      (cond
+       ((and export? (not fold?)) contents′)
+       (not-export? nil)
+       (fold?
+        (thread-last contents′
+          (replace-regexp-in-string ":title:.*\n" "")
+          (format "<details class=\"code-details\"> <summary> <strong>
+              <font face=\"Courier\" size=\"3\" color=\"green\"> %s
+              </font> </strong> </summary> %s </details>" title′))))))
 
-(setq org-html-format-drawer-function 'my/org-drawer-format)
+  (setq org-html-format-drawer-function 'my/org-drawer-format)
 
@@ -1656,59 +1656,59 @@ Adapt this from https://github.com/

LaTeX Fragments

-
(after! org
-  ;; Highligh latex parts in org mode
-  (setq org-highlight-latex-and-related '(latex script entities))
+
  (after! org
+    ;; Highligh latex parts in org mode
+    (setq org-highlight-latex-and-related '(latex script entities))
 
-  ;; Use F9 to globally generate all the latex fragments
-  (map! :map org-mode-map
-        :n "<f9>"
-        (lambda () (interactive) (org-preview-latex-fragment 16)))
+    ;; Use F9 to globally generate all the latex fragments
+    (map! :map org-mode-map
+          :n "<f9>"
+          (lambda () (interactive) (org-preview-latex-fragment 16)))
 
-  ;; Put all the preview images in some directory
-  (setq org-preview-latex-image-directory "~/.ltximg/")
+    ;; Put all the preview images in some directory
+    (setq org-preview-latex-image-directory "~/.ltximg/")
 
-  ;; Define backends to preview LaTeX fragments
-  (setq org-preview-latex-process-alist '((imagemagick
-                                           :programs ("pdflatex" "convert")
-                                           :description "pdf > png"
-                                           :message "you need to install the programs: pdflatex and imagemagick."
-                                           :image-input-type "pdf"
-                                           :image-output-type "png"
-                                           :image-size-adjust (1.0 . 1.0)
-                                           :latex-compiler ("pdflatex -interaction nonstopmode -output-directory %o %f")
-                                           :image-converter ("convert -density %D -trim -antialias %f -quality 100 %O"))
-                                          (dvipng
-                                           :programs ("latex" "dvipng")
-                                           :description "dvi > png"
-                                           :message "you need to install the programs: latex and dvipng."
-                                           :image-input-type "dvi"
-                                           :image-output-type "png"
-                                           :image-size-adjust (0.4 . 0.4)
-                                           :latex-compiler ("latex -interaction nonstopmode -output-directory %o %f")
-                                           :image-converter ("dvipng -D %D -T tight -o %O %f"))
-                                          (dvisvgm
-                                           :programs ("pdflatex" "dvisvgm")
-                                           :description "dvi > svg"
-                                           :message "you need to install the programs: latex and dvisvgm."
-                                           :image-input-type "dvi"
-                                           :image-output-type "svg"
-                                           :image-size-adjust (0.6 . 0.6)
-                                           :latex-compiler ("latex -interaction nonstopmode -output-directory %o %f")
-                                           :image-converter ("dvisvgm %f -n -b min -c %S -o %O"))
-                                          ))
+    ;; Define backends to preview LaTeX fragments
+    (setq org-preview-latex-process-alist '((imagemagick
+                                             :programs ("pdflatex" "convert")
+                                             :description "pdf > png"
+                                             :message "you need to install the programs: pdflatex and imagemagick."
+                                             :image-input-type "pdf"
+                                             :image-output-type "png"
+                                             :image-size-adjust (1.0 . 1.0)
+                                             :latex-compiler ("pdflatex -interaction nonstopmode -output-directory %o %f")
+                                             :image-converter ("convert -density %D -trim -antialias %f -quality 100 %O"))
+                                            (dvipng
+                                             :programs ("latex" "dvipng")
+                                             :description "dvi > png"
+                                             :message "you need to install the programs: latex and dvipng."
+                                             :image-input-type "dvi"
+                                             :image-output-type "png"
+                                             :image-size-adjust (0.4 . 0.4)
+                                             :latex-compiler ("latex -interaction nonstopmode -output-directory %o %f")
+                                             :image-converter ("dvipng -D %D -T tight -o %O %f"))
+                                            (dvisvgm
+                                             :programs ("pdflatex" "dvisvgm")
+                                             :description "dvi > svg"
+                                             :message "you need to install the programs: latex and dvisvgm."
+                                             :image-input-type "dvi"
+                                             :image-output-type "svg"
+                                             :image-size-adjust (0.6 . 0.6)
+                                             :latex-compiler ("latex -interaction nonstopmode -output-directory %o %f")
+                                             :image-converter ("dvisvgm %f -n -b min -c %S -o %O"))
+                                            ))
 
-  ;; Use imagemagick/dvisvgm to generate png from pdf
-  (setq org-preview-latex-default-process 'dvisvgm)
+    ;; Use imagemagick/dvisvgm to generate png from pdf
+    (setq org-preview-latex-default-process 'dvisvgm)
 
-  ;; Don't change the font size for subscripts and superscripts in latex fragments.
-  ;; This cause the orgmode tables not to be well aligned.
-  (setq font-latex-fontify-script nil)
+    ;; Don't change the font size for subscripts and superscripts in latex fragments.
+    ;; This cause the orgmode tables not to be well aligned.
+    (setq font-latex-fontify-script nil)
 
-  ;; Colors of latex fragments
-  (setq org-format-latex-options (plist-put org-format-latex-options :foreground 'default))
-  (setq org-format-latex-options (plist-put org-format-latex-options :background 'default))
-  )
+    ;; Colors of latex fragments
+    (setq org-format-latex-options (plist-put org-format-latex-options :foreground 'default))
+    (setq org-format-latex-options (plist-put org-format-latex-options :background 'default))
+    )
 
@@ -1718,83 +1718,83 @@ Adapt this from
https://github.com/

LaTeX Classes

-
(after! org
-;; Custom classes to use when exporting to latex
-(add-to-list 'org-latex-classes
-          '("beamer"
-            ,(concat "\\documentclass[presentation]{beamer}\n"
-                     "[DEFAULT-PACKAGES]"
-                     "[PACKAGES]"
-                     "[EXTRA]\n")
-            ("\\section{%s}" . "\\section*{%s}")
-            ("\\subsection{%s}" . "\\subsection*{%s}")
-            ("\\subsubsection{%s}" . "\\subsubsection*{%s}")))
-(add-to-list 'org-latex-classes
-             '("clean-cheatsheet"
-               "\\documentclass{clean-cheatsheet}"
-               ("\\section{%s}" . "\\section*{%s}")
-               ("\\subsection{%s}" . "\\subsection*{%s}")
-               ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
-               ("\\paragraph{%s}" . "\\paragraph*{%s}")
-               ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
-             )
-(add-to-list 'org-latex-classes
-             '("clean-beamer"
-               "\\documentclass{clean-beamer}"
-               ("\\section{%s}" . "\\section*{%s}")
-               ("\\subsection{%s}" . "\\subsection*{%s}")
-               ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
-               ("\\paragraph{%s}" . "\\paragraph*{%s}")
-               ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
-             )
-(add-to-list 'org-latex-classes
-             '("cleanreport"
-               "\\documentclass{cleanreport}"
-               ("\\section{%s}" . "\\section*{%s}")
-               ("\\subsection{%s}" . "\\subsection*{%s}")
-               ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
-               ("\\paragraph{%s}" . "\\paragraph*{%s}")
-               ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
-             )
-(add-to-list 'org-latex-classes
-             '("scrartcl"
-               "\\documentclass{scrartcl}"
-               ("\\section{%s}" . "\\section*{%s}")
-               ("\\subsection{%s}" . "\\subsection*{%s}")
-               ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
-               ("\\paragraph{%s}" . "\\paragraph*{%s}")
-               ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
-             )
-(add-to-list 'org-latex-classes
-             '("scrreprt"
-               "\\documentclass[a4paper, 10pt, DIV=12, parskip=full]{scrreprt}"
-               ("\\chapter{%s}" . "\\chapter*{%s}")
-               ("\\section{%s}" . "\\section*{%s}")
-               ("\\subsection{%s}" . "\\subsection*{%s}")
-               ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
-               ("\\paragraph{%s}" . "\\paragraph*{%s}")
-               ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
-             )
-(add-to-list 'org-latex-classes
-             '("biblioreport"
-               "\\documentclass{biblioreport}"
-               ("\\section{%s}" . "\\section*{%s}")
-               ("\\subsection{%s}" . "\\subsection*{%s}")
-               ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
-               ("\\paragraph{%s}" . "\\paragraph*{%s}")
-               ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
-             )
-(add-to-list 'org-latex-classes
-             '("moderncv"
-               "\\documentclass{moderncv}"
-               ("\\section{%s}" . "\\section*{%s}")
-               ("\\subsection{%s}" . "\\subsection*{%s}")
-               ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
-               ("\\paragraph{%s}" . "\\paragraph*{%s}")
-               ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
-             )
+
  (after! org
+  ;; Custom classes to use when exporting to latex
+  (add-to-list 'org-latex-classes
+            '("beamer"
+              ,(concat "\\documentclass[presentation]{beamer}\n"
+                       "[DEFAULT-PACKAGES]"
+                       "[PACKAGES]"
+                       "[EXTRA]\n")
+              ("\\section{%s}" . "\\section*{%s}")
+              ("\\subsection{%s}" . "\\subsection*{%s}")
+              ("\\subsubsection{%s}" . "\\subsubsection*{%s}")))
+  (add-to-list 'org-latex-classes
+               '("clean-cheatsheet"
+                 "\\documentclass{clean-cheatsheet}"
+                 ("\\section{%s}" . "\\section*{%s}")
+                 ("\\subsection{%s}" . "\\subsection*{%s}")
+                 ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
+                 ("\\paragraph{%s}" . "\\paragraph*{%s}")
+                 ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
+               )
+  (add-to-list 'org-latex-classes
+               '("clean-beamer"
+                 "\\documentclass{clean-beamer}"
+                 ("\\section{%s}" . "\\section*{%s}")
+                 ("\\subsection{%s}" . "\\subsection*{%s}")
+                 ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
+                 ("\\paragraph{%s}" . "\\paragraph*{%s}")
+                 ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
+               )
+  (add-to-list 'org-latex-classes
+               '("cleanreport"
+                 "\\documentclass{cleanreport}"
+                 ("\\section{%s}" . "\\section*{%s}")
+                 ("\\subsection{%s}" . "\\subsection*{%s}")
+                 ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
+                 ("\\paragraph{%s}" . "\\paragraph*{%s}")
+                 ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
+               )
+  (add-to-list 'org-latex-classes
+               '("scrartcl"
+                 "\\documentclass{scrartcl}"
+                 ("\\section{%s}" . "\\section*{%s}")
+                 ("\\subsection{%s}" . "\\subsection*{%s}")
+                 ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
+                 ("\\paragraph{%s}" . "\\paragraph*{%s}")
+                 ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
+               )
+  (add-to-list 'org-latex-classes
+               '("scrreprt"
+                 "\\documentclass[a4paper, 10pt, DIV=12, parskip=full]{scrreprt}"
+                 ("\\chapter{%s}" . "\\chapter*{%s}")
+                 ("\\section{%s}" . "\\section*{%s}")
+                 ("\\subsection{%s}" . "\\subsection*{%s}")
+                 ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
+                 ("\\paragraph{%s}" . "\\paragraph*{%s}")
+                 ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
+               )
+  (add-to-list 'org-latex-classes
+               '("biblioreport"
+                 "\\documentclass{biblioreport}"
+                 ("\\section{%s}" . "\\section*{%s}")
+                 ("\\subsection{%s}" . "\\subsection*{%s}")
+                 ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
+                 ("\\paragraph{%s}" . "\\paragraph*{%s}")
+                 ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
+               )
+  (add-to-list 'org-latex-classes
+               '("moderncv"
+                 "\\documentclass{moderncv}"
+                 ("\\section{%s}" . "\\section*{%s}")
+                 ("\\subsection{%s}" . "\\subsection*{%s}")
+                 ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
+                 ("\\paragraph{%s}" . "\\paragraph*{%s}")
+                 ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
+               )
 
-)
+  )
 
@@ -1804,16 +1804,16 @@ Adapt this from
https://github.com/

Ox Latex Subfigure package

-
;; (use-package! ox-latex-subfigure
-;;   :after org
-;;   :config (require 'ox-latex-subfigure))
+
  ;; (use-package! ox-latex-subfigure
+  ;;   :after org
+  ;;   :config (require 'ox-latex-subfigure))
 
-
(use-package! ox-latex-subfigure
-  :load-path "~/.config/doom/packages/ox-latex-subfigure/"
-  :config (require 'ox-latex-subfigure))
+
  (use-package! ox-latex-subfigure
+    :load-path "~/.config/doom/packages/ox-latex-subfigure/"
+    :config (require 'ox-latex-subfigure))
 
@@ -1827,20 +1827,20 @@ Adapt this from
https://github.com/

-
(after! org
-  (defun tdh-get-headline-string-element  (headline backend info)
-    (let ((prop-point (next-property-change 0 headline)))
-      (if prop-point (plist-get (text-properties-at prop-point headline) :parent))))
+
  (after! org
+    (defun tdh-get-headline-string-element  (headline backend info)
+      (let ((prop-point (next-property-change 0 headline)))
+        (if prop-point (plist-get (text-properties-at prop-point headline) :parent))))
 
-  (defun tdh-ensure-latex-clearpage (headline backend info)
-    (when (org-export-derived-backend-p backend 'latex)
-      (let ((elmnt (tdh-get-headline-string-element headline backend info)))
-        (when (and elmnt (org-element-property :CLEARPAGE elmnt))
-          (concat "\\clearpage\n" headline)))))
+    (defun tdh-ensure-latex-clearpage (headline backend info)
+      (when (org-export-derived-backend-p backend 'latex)
+        (let ((elmnt (tdh-get-headline-string-element headline backend info)))
+          (when (and elmnt (org-element-property :CLEARPAGE elmnt))
+            (concat "\\clearpage\n" headline)))))
 
-  (add-to-list 'org-export-filter-headline-functions
-               'tdh-ensure-latex-clearpage)
-  )
+    (add-to-list 'org-export-filter-headline-functions
+                 'tdh-ensure-latex-clearpage)
+    )
 
@@ -1850,35 +1850,35 @@ Adapt this from
https://github.com/

Default added packages

-
(after! org
-  (setq org-latex-default-packages-alist
-        '(("AUTO" "inputenc" t ("pdflatex")) ;; for basic font and character selection
-          ("T1" "fontenc" t ("pdflatex")) ;; for basic font and character selection
-          ("" "graphicx" t) ;; for including images
-          ("" "grffile" t) ;; allow periods and spaces in graphics file names
-          ("" "longtable" nil) ;; For multipage tables
-          ("" "wrapfig" nil) ;; for figure placement
-          ("" "rotating" nil) ;; for sideways figures and tables
-          ("normalem" "ulem" t) ;; for underline and strike-through
-          ("" "amsmath" t) ;; for subscript and superscript and math environments
-          ("" "textcomp" t) ;; for various symbols
-          ("" "amssymb" t) ;; for various symbols
-          ("" "capt-of" nil) ;; for captions outside of floats
-          ("" "hyperref" nil)) ;; for cross references
-        )
-  )
+
  (after! org
+    (setq org-latex-default-packages-alist
+          '(("AUTO" "inputenc" t ("pdflatex")) ;; for basic font and character selection
+            ("T1" "fontenc" t ("pdflatex")) ;; for basic font and character selection
+            ("" "graphicx" t) ;; for including images
+            ("" "grffile" t) ;; allow periods and spaces in graphics file names
+            ("" "longtable" nil) ;; For multipage tables
+            ("" "wrapfig" nil) ;; for figure placement
+            ("" "rotating" nil) ;; for sideways figures and tables
+            ("normalem" "ulem" t) ;; for underline and strike-through
+            ("" "amsmath" t) ;; for subscript and superscript and math environments
+            ("" "textcomp" t) ;; for various symbols
+            ("" "amssymb" t) ;; for various symbols
+            ("" "capt-of" nil) ;; for captions outside of floats
+            ("" "hyperref" nil)) ;; for cross references
+          )
+    )
 
-
(after! org
-  (add-to-list 'org-latex-packages-alist '("" "siunitx" t))
-  (add-to-list 'org-latex-packages-alist '("" "array" t))
-  (add-to-list 'org-latex-packages-alist '("" "tabularx" t))
-  (add-to-list 'org-latex-packages-alist '("" "booktabs" t))
-  (add-to-list 'org-latex-packages-alist '("" "bm" t))
-  (add-to-list 'org-latex-packages-alist '("most" "tcolorbox" t))
-  )
+
  (after! org
+    (add-to-list 'org-latex-packages-alist '("" "siunitx" t))
+    (add-to-list 'org-latex-packages-alist '("" "array" t))
+    (add-to-list 'org-latex-packages-alist '("" "tabularx" t))
+    (add-to-list 'org-latex-packages-alist '("" "booktabs" t))
+    (add-to-list 'org-latex-packages-alist '("" "bm" t))
+    (add-to-list 'org-latex-packages-alist '("most" "tcolorbox" t))
+    )
 
@@ -1888,29 +1888,29 @@ Adapt this from
https://github.com/

Some configurations

-
(after! org
-  ;; Setup default option for image size when exporting to LaTeX
-  (setq org-latex-image-default-scale "")
-  (setq org-latex-image-default-width "")
-  (setq org-latex-image-default-height "")
-  (setq org-latex-image-default-option "scale=1")
+
  (after! org
+    ;; Setup default option for image size when exporting to LaTeX
+    (setq org-latex-image-default-scale "")
+    (setq org-latex-image-default-width "")
+    (setq org-latex-image-default-height "")
+    (setq org-latex-image-default-option "scale=1")
 
-  ;; Use define labels instead of automatic generated ones
-  (setq org-latex-prefer-user-labels t)
+    ;; Use define labels instead of automatic generated ones
+    (setq org-latex-prefer-user-labels t)
 
-  ;; Captions above the table
-  (setq org-latex-caption-above '(table))
+    ;; Captions above the table
+    (setq org-latex-caption-above '(table))
 
-  ;; Settings to export code with `minted' instead of `verbatim'.
-  (setq org-latex-listings 'minted)
+    ;; Settings to export code with `minted' instead of `verbatim'.
+    (setq org-latex-listings 'minted)
 
-  ;; Set the following as images
-  (setq org-latex-inline-image-rules '(("file" . "\\.\\(pdf\\|jpeg\\|jpg\\|png\\|ps\\|eps\\|tikz\\|pgf\\|svg\\|gif\\)\\'")))
+    ;; Set the following as images
+    (setq org-latex-inline-image-rules '(("file" . "\\.\\(pdf\\|jpeg\\|jpg\\|png\\|ps\\|eps\\|tikz\\|pgf\\|svg\\|gif\\)\\'")))
 
-  ;; Command used when exporting to pdf
-  (setq org-latex-pdf-process
-        '("latexmk -cd -pdflatex=\"pdflatex -synctex=1 -shell-escape -interaction nonstopmode -output-directory %o\" -pdf -bibtex -f %f"))
-  )
+    ;; Command used when exporting to pdf
+    (setq org-latex-pdf-process
+          '("latexmk -cd -pdflatex=\"pdflatex -synctex=1 -shell-escape -interaction nonstopmode -output-directory %o\" -pdf -bibtex -f %f"))
+    )
 
@@ -1923,16 +1923,16 @@ Adapt this from
https://github.com/ Bold Text

-
(after! org
-  (defun tdh-my-beamer-bold (contents backend info)
-    (when (eq backend 'beamer)
-      (replace-regexp-in-string
-       (concat "\\`\\\\" "[A-Za-z0-9]+") ;; If not, orgmode is crazy...
-       "\\\\textbf"
-       contents)))
+
  (after! org
+    (defun tdh-my-beamer-bold (contents backend info)
+      (when (eq backend 'beamer)
+        (replace-regexp-in-string
+         (concat "\\`\\\\" "[A-Za-z0-9]+") ;; If not, orgmode is crazy...
+         "\\\\textbf"
+         contents)))
 
-  (add-to-list 'org-export-filter-bold-functions 'tdh-my-beamer-bold)
-  )
+    (add-to-list 'org-export-filter-bold-functions 'tdh-my-beamer-bold)
+    )
 
@@ -1944,18 +1944,18 @@ Special Environments
  • [ ] Make some comment those special environments
  • -
    (after! org
    -  (add-to-list 'org-beamer-environments-extra
    -               '("cbox" ;; Name of environment
    -                 "m" ;; Selection key
    -                 "\\onslide%a{\\begin{cbox}[%h]%O"
    -                 "\\end{cbox}}\\vspace{0.5em}"))
    -  (add-to-list 'org-beamer-environments-extra
    -               '("csubbox" ;; Name of environment
    -                 "M" ;; Selection key
    -                 "\\onslide%a{\\tcbsubtitle{%h}"
    -                 "}"))
    -  )
    +
      (after! org
    +    (add-to-list 'org-beamer-environments-extra
    +                 '("cbox" ;; Name of environment
    +                   "m" ;; Selection key
    +                   "\\onslide%a{\\begin{cbox}[%h]%O"
    +                   "\\end{cbox}}\\vspace{0.5em}"))
    +    (add-to-list 'org-beamer-environments-extra
    +                 '("csubbox" ;; Name of environment
    +                   "M" ;; Selection key
    +                   "\\onslide%a{\\tcbsubtitle{%h}"
    +                   "}"))
    +    )
     
    @@ -1969,51 +1969,51 @@ Special Environments

    -
    (defcustom tdh-org-property-mapping
    -  '((latex ("CUSTOM_PAGE" . tdh-insert-org-page-latex)
    -           ("CUSTOM_LABEL" . tdh-insert-org-label-latex)))
    -  "List of mappings from org property to arbitrary strings.
    -Each element is a list:
    -  (BACKEND (PROPERTY1 . FUNCTION1) (PROPERTY2 . FUNCTION2) ...)
    -FUNCTION are functions which get called with a single
    -argument (the value of PROPERTY) and are responsible for doing
    -whatever should be done."
    -  :type '(repeat (cons symbol (repeat (cons string string)))))
    +
      (defcustom tdh-org-property-mapping
    +    '((latex ("CUSTOM_PAGE" . tdh-insert-org-page-latex)
    +             ("CUSTOM_LABEL" . tdh-insert-org-label-latex)))
    +    "List of mappings from org property to arbitrary strings.
    +  Each element is a list:
    +    (BACKEND (PROPERTY1 . FUNCTION1) (PROPERTY2 . FUNCTION2) ...)
    +  FUNCTION are functions which get called with a single
    +  argument (the value of PROPERTY) and are responsible for doing
    +  whatever should be done."
    +    :type '(repeat (cons symbol (repeat (cons string string)))))
     
    -
    (defun tdh-replace-org-property (backend)
    -  "Convert org properties using `tdh-org-property-mapping'.
    -Lookup BACKEND in `tdh-org-property-mapping' for a list of
    -(PROPERTY REPLACEMENT). For each healine being exported, if it has a
    -PROPERTY listed insert a string immediately after the healine given by
    -    (format REPLACEMENT PROPERTY-VALUE)"
    -  (let ((map (cdr (assoc backend tdh-org-property-mapping)))
    -        value replacement)
    -    (when map
    -      (org-map-entries
    -       (lambda ()
    -         (dolist (it map)
    -           (save-excursion
    -             (when (setq value (org-entry-get (point) (car it)))
    -               (funcall (cdr it) value)))))))))
    +
      (defun tdh-replace-org-property (backend)
    +    "Convert org properties using `tdh-org-property-mapping'.
    +  Lookup BACKEND in `tdh-org-property-mapping' for a list of
    +  (PROPERTY REPLACEMENT). For each healine being exported, if it has a
    +  PROPERTY listed insert a string immediately after the healine given by
    +      (format REPLACEMENT PROPERTY-VALUE)"
    +    (let ((map (cdr (assoc backend tdh-org-property-mapping)))
    +          value replacement)
    +      (when map
    +        (org-map-entries
    +         (lambda ()
    +           (dolist (it map)
    +             (save-excursion
    +               (when (setq value (org-entry-get (point) (car it)))
    +                 (funcall (cdr it) value)))))))))
     
    -(add-hook 'org-export-before-processing-hook #'tdh-replace-org-property)
    +  (add-hook 'org-export-before-processing-hook #'tdh-replace-org-property)
     
    -
    (defun tdh-insert-org-label-latex (label)
    -  "Insert \"\\\\label{LABEL}\\n\" after the :PROPERTY: drawer."
    -  (search-forward-regexp org-property-end-re)
    -  (forward-char 1)
    -  (insert (format "\\label{%s}\n" label)))
    -(defun tdh-insert-org-page-latex (page)
    -  "Insert \"\\\\page{PAGE}\\n\" after the :PROPERTY: drawer."
    -  (search-forward-regexp org-property-end-re)
    -  (forward-char 1)
    -  (insert (format "\\page{%s}\n" page)))
    +
      (defun tdh-insert-org-label-latex (label)
    +    "Insert \"\\\\label{LABEL}\\n\" after the :PROPERTY: drawer."
    +    (search-forward-regexp org-property-end-re)
    +    (forward-char 1)
    +    (insert (format "\\label{%s}\n" label)))
    +  (defun tdh-insert-org-page-latex (page)
    +    "Insert \"\\\\page{PAGE}\\n\" after the :PROPERTY: drawer."
    +    (search-forward-regexp org-property-end-re)
    +    (forward-char 1)
    +    (insert (format "\\page{%s}\n" page)))
     
    @@ -2027,50 +2027,50 @@ Special Environments

    -
    (after! org
    -  (defun tdh-org-renumber-environment (orig-func &rest args)
    -    "A function to inject numbers in LaTeX fragment previews."
    -    (let ((results '())
    -          (counter -1)
    -          (numberp))
    +
      (after! org
    +    (defun tdh-org-renumber-environment (orig-func &rest args)
    +      "A function to inject numbers in LaTeX fragment previews."
    +      (let ((results '())
    +            (counter -1)
    +            (numberp))
     
    -      (setq results (loop for (begin .  env) in
    -                          (org-element-map (org-element-parse-buffer) 'latex-environment
    -                            (lambda (env)
    -                              (cons
    -                               (org-element-property :begin env)
    -                               (org-element-property :value env))))
    -                          collect
    -                          (cond
    -                           ((and (string-match "\\\\begin{equation}" env)
    -                                 (not (string-match "\\\\tag{" env)))
    -                            (incf counter)
    -                            (cons begin counter))
    -                           ((string-match "\\\\begin{align}" env)
    -                            (prog2
    -                                (incf counter)
    -                                (cons begin counter)
    -                              (with-temp-buffer
    -                                (insert env)
    -                                (goto-char (point-min))
    -                                ;; \\ is used for a new line. Each one leads to a number
    -                                (incf counter (count-matches "\\\\$"))
    -                                ;; unless there are nonumbers.
    -                                (goto-char (point-min))
    -                                (decf counter (count-matches "\\nonumber")))))
    -                           (t
    -                            (cons begin nil)))))
    +        (setq results (loop for (begin .  env) in
    +                            (org-element-map (org-element-parse-buffer) 'latex-environment
    +                              (lambda (env)
    +                                (cons
    +                                 (org-element-property :begin env)
    +                                 (org-element-property :value env))))
    +                            collect
    +                            (cond
    +                             ((and (string-match "\\\\begin{equation}" env)
    +                                   (not (string-match "\\\\tag{" env)))
    +                              (incf counter)
    +                              (cons begin counter))
    +                             ((string-match "\\\\begin{align}" env)
    +                              (prog2
    +                                  (incf counter)
    +                                  (cons begin counter)
    +                                (with-temp-buffer
    +                                  (insert env)
    +                                  (goto-char (point-min))
    +                                  ;; \\ is used for a new line. Each one leads to a number
    +                                  (incf counter (count-matches "\\\\$"))
    +                                  ;; unless there are nonumbers.
    +                                  (goto-char (point-min))
    +                                  (decf counter (count-matches "\\nonumber")))))
    +                             (t
    +                              (cons begin nil)))))
     
    -      (when (setq numberp (cdr (assoc (point) results)))
    -        (setf (car args)
    -              (concat
    -               (format "\\setcounter{equation}{%s}\n" numberp)
    -               (car args)))))
    +        (when (setq numberp (cdr (assoc (point) results)))
    +          (setf (car args)
    +                (concat
    +                 (format "\\setcounter{equation}{%s}\n" numberp)
    +                 (car args)))))
     
    -    (apply orig-func args))
    +      (apply orig-func args))
     
    -  (advice-add 'org-create-formula-image :around #'tdh-org-renumber-environment)
    -  )
    +    (advice-add 'org-create-formula-image :around #'tdh-org-renumber-environment)
    +    )
     
    @@ -2085,25 +2085,25 @@ Special Environments

    -
    (after! org
    -  (add-to-list 'org-src-lang-modes '("latex-macros" . latex))
    +
      (after! org
    +    (add-to-list 'org-src-lang-modes '("latex-macros" . latex))
     
    -  (defvar org-babel-default-header-args:latex-macros
    -    '((:results . "raw")
    -      (:exports . "results")))
    +    (defvar org-babel-default-header-args:latex-macros
    +      '((:results . "raw")
    +        (:exports . "results")))
     
    -  (defun prefix-all-lines (pre body)
    -    (with-temp-buffer
    -      (insert body)
    -      (string-insert-rectangle (point-min) (point-max) pre)
    -      (buffer-string)))
    +    (defun prefix-all-lines (pre body)
    +      (with-temp-buffer
    +        (insert body)
    +        (string-insert-rectangle (point-min) (point-max) pre)
    +        (buffer-string)))
     
    -  (defun org-babel-execute:latex-macros (body _params)
    -    (concat
    -     "\n#+begin_export html\n<div style=\"display: none\"> \\(\n"
    -     body
    -     "\n\\)</div>\n#+end_export\n"))
    -  )
    +    (defun org-babel-execute:latex-macros (body _params)
    +      (concat
    +       "\n#+begin_export html\n<div style=\"display: none\"> \\(\n"
    +       body
    +       "\n\\)</div>\n#+end_export\n"))
    +    )
     
    @@ -2114,60 +2114,60 @@ Special Environments

    Org Projects

    -
    (setq org-publish-project-alist
    -      '(("config"
    -         :base-directory "~/.config/literate-dotfiles/"
    -         :publishing-directory "~/.config/literate-dotfiles/docs/"
    -         :recursive nil
    -         :publishing-function org-html-publish-to-html
    -         :auto-sitemap nil
    -         :section-numbers nil
    -         :table-of-contents nil)
    -        ("stewart-simscape"
    -         :base-directory "~/Cloud/thesis/matlab/stewart-simscape/org/"
    -         :base-extension "org"
    -         :publishing-directory "~/Cloud/thesis/matlab/stewart-simscape/docs/"
    -         :author "Dehaeze Thomas"
    -         :email "dehaeze.thomas@gmail.com/"
    -         :recursive nil
    -         :publishing-function org-html-publish-to-html
    -         :auto-preamble t
    -         :auto-sitemap nil
    -         :html-link-up "index.html"
    -         :html-link-home "index.html"
    -         :with-todo-keywords nil
    -         :html-wrap-src-lines nil
    -         :table-of-contents nil)
    -        ("nass-simscape"
    -         :base-directory "~/Cloud/thesis/matlab/nass-simscape/org/"
    -         :base-extension "org"
    -         :publishing-directory "~/Cloud/thesis/matlab/nass-simscape/docs/"
    -         :author "Dehaeze Thomas"
    -         :email "dehaeze.thomas@gmail.com/"
    -         :recursive nil
    -         :publishing-function org-html-publish-to-html
    -         :auto-preamble t
    -         :auto-sitemap nil
    -         :html-link-up "index.html"
    -         :html-link-home "index.html"
    -         :with-todo-keywords nil
    -         :html-wrap-src-lines nil
    -         :table-of-contents nil)
    -        ("tikz-maker"
    -         :base-directory "~/Cloud/tikz/org/"
    -         :base-extension "org"
    -         :publishing-directory "~/Cloud/tikz/docs/"
    -         :author "Dehaeze Thomas"
    -         :email "dehaeze.thomas@gmail.com/"
    -         :recursive nil
    -         :publishing-function org-html-publish-to-html
    -         :auto-preamble t
    -         :auto-sitemap nil
    -         :html-link-up "index.html"
    -         :html-link-home "index.html"
    -         :with-todo-keywords nil
    -         :html-wrap-src-lines nil
    -         :table-of-contents nil)))
    +
      (setq org-publish-project-alist
    +        '(("config"
    +           :base-directory "~/.config/literate-dotfiles/"
    +           :publishing-directory "~/.config/literate-dotfiles/docs/"
    +           :recursive nil
    +           :publishing-function org-html-publish-to-html
    +           :auto-sitemap nil
    +           :section-numbers nil
    +           :table-of-contents nil)
    +          ("stewart-simscape"
    +           :base-directory "~/Cloud/thesis/matlab/stewart-simscape/org/"
    +           :base-extension "org"
    +           :publishing-directory "~/Cloud/thesis/matlab/stewart-simscape/docs/"
    +           :author "Dehaeze Thomas"
    +           :email "dehaeze.thomas@gmail.com/"
    +           :recursive nil
    +           :publishing-function org-html-publish-to-html
    +           :auto-preamble t
    +           :auto-sitemap nil
    +           :html-link-up "index.html"
    +           :html-link-home "index.html"
    +           :with-todo-keywords nil
    +           :html-wrap-src-lines nil
    +           :table-of-contents nil)
    +          ("nass-simscape"
    +           :base-directory "~/Cloud/thesis/matlab/nass-simscape/org/"
    +           :base-extension "org"
    +           :publishing-directory "~/Cloud/thesis/matlab/nass-simscape/docs/"
    +           :author "Dehaeze Thomas"
    +           :email "dehaeze.thomas@gmail.com/"
    +           :recursive nil
    +           :publishing-function org-html-publish-to-html
    +           :auto-preamble t
    +           :auto-sitemap nil
    +           :html-link-up "index.html"
    +           :html-link-home "index.html"
    +           :with-todo-keywords nil
    +           :html-wrap-src-lines nil
    +           :table-of-contents nil)
    +          ("tikz-maker"
    +           :base-directory "~/Cloud/tikz/org/"
    +           :base-extension "org"
    +           :publishing-directory "~/Cloud/tikz/docs/"
    +           :author "Dehaeze Thomas"
    +           :email "dehaeze.thomas@gmail.com/"
    +           :recursive nil
    +           :publishing-function org-html-publish-to-html
    +           :auto-preamble t
    +           :auto-sitemap nil
    +           :html-link-up "index.html"
    +           :html-link-home "index.html"
    +           :with-todo-keywords nil
    +           :html-wrap-src-lines nil
    +           :table-of-contents nil)))
     
    @@ -2177,18 +2177,18 @@ Special Environments

    Automatically run startblock when opening org-mode files

    -
    (after! org
    -  (defun tdh-eval-startblock ()
    -    (if (member "startblock" (org-babel-src-block-names))
    -        (save-excursion
    -          (org-babel-goto-named-src-block "startblock")
    -          (org-babel-execute-src-block))
    -      nil
    -      )
    -    )
    +
      (after! org
    +    (defun tdh-eval-startblock ()
    +      (if (member "startblock" (org-babel-src-block-names))
    +          (save-excursion
    +            (org-babel-goto-named-src-block "startblock")
    +            (org-babel-execute-src-block))
    +        nil
    +        )
    +      )
     
    -  (add-hook 'org-mode-hook 'tdh-eval-startblock)
    -  )
    +    (add-hook 'org-mode-hook 'tdh-eval-startblock)
    +    )
     
    @@ -2207,59 +2207,59 @@ Special Environments
    -
    ;; required libraries
    -(require 'dash)
    -;; (require 'swiper)
    -(require 's)
    +
      ;; required libraries
    +  (require 'dash)
    +  ;; (require 'swiper)
    +  (require 's)
     
    -;; start directory
    -(defvar tdh-image-dir (expand-file-name "/home/thomas/Pictures"))
    +  ;; start directory
    +  (defvar tdh-image-dir (expand-file-name "/home/thomas/Pictures"))
     
    -(defun tdh-insert-conference-image ()
    -  "Insert image from conference directory, rename and add link in current file.
    +  (defun tdh-insert-conference-image ()
    +    "Insert image from conference directory, rename and add link in current file.
     
    -The file is taken from a start directory set by `tdh-image-dir' and moved to the current directory, renamed and embedded at the point as an org-mode link. The user is presented with a list of files in the start directory, from which to select the file to move, sorted by most recent first."
    -  (interactive)
    -  (let (file-list target-dir file-list-sorted start-file start-file-full file-ext end-file end-file-base end-file-full file-number)
    -    ;; Clean directories from list but keep times
    -    (setq file-list
    -          (-remove (lambda (x) (nth 1 x))
    -                   (directory-files-and-attributes tdh-image-dir)))
    +  The file is taken from a start directory set by `tdh-image-dir' and moved to the current directory, renamed and embedded at the point as an org-mode link. The user is presented with a list of files in the start directory, from which to select the file to move, sorted by most recent first."
    +    (interactive)
    +    (let (file-list target-dir file-list-sorted start-file start-file-full file-ext end-file end-file-base end-file-full file-number)
    +      ;; Clean directories from list but keep times
    +      (setq file-list
    +            (-remove (lambda (x) (nth 1 x))
    +                     (directory-files-and-attributes tdh-image-dir)))
     
    -    ;; Get target directory
    -    (setq target-dir (file-name-directory (buffer-file-name)))
    +      ;; Get target directory
    +      (setq target-dir (file-name-directory (buffer-file-name)))
     
    -    ;; Sort list by most recent
    -    (setq file-list-sorted
    -          (mapcar #'car
    -                  (sort file-list
    -                        #'(lambda (x y) (time-less-p (nth 6 y) (nth 6 x))))))
    +      ;; Sort list by most recent
    +      (setq file-list-sorted
    +            (mapcar #'car
    +                    (sort file-list
    +                          #'(lambda (x y) (time-less-p (nth 6 y) (nth 6 x))))))
     
    -    ;; Use ivy to select start-file
    -    (setq start-file (ivy-read
    -                      (concat "Move selected file to " target-dir ":")
    -                      file-list-sorted
    -                      :re-builder #'ivy--regex
    -                      :sort nil
    -                      :initial-input nil))
    +      ;; Use ivy to select start-file
    +      (setq start-file (ivy-read
    +                        (concat "Move selected file to " target-dir ":")
    +                        file-list-sorted
    +                        :re-builder #'ivy--regex
    +                        :sort nil
    +                        :initial-input nil))
     
    -    ;; add full path to start file and end-file
    -    (setq start-file-full
    -          (expand-file-name start-file tdh-image-dir))
    +      ;; add full path to start file and end-file
    +      (setq start-file-full
    +            (expand-file-name start-file tdh-image-dir))
     
    -    ;; final file name including path
    -    (setq end-file-full
    -          (expand-file-name start-file target-dir))
    +      ;; final file name including path
    +      (setq end-file-full
    +            (expand-file-name start-file target-dir))
     
    -    ;; rename file
    -    (rename-file start-file-full end-file-full)
    -    (message "moved %s to %s" start-file-full start-file)
    +      ;; rename file
    +      (rename-file start-file-full end-file-full)
    +      (message "moved %s to %s" start-file-full start-file)
     
    -    ;; insert link
    -    (insert (org-make-link-string (format "file:%s" start-file)))
    +      ;; insert link
    +      (insert (org-make-link-string (format "file:%s" start-file)))
     
    -    ;; display image
    -    (org-display-inline-images t t)))
    +      ;; display image
    +      (org-display-inline-images t t)))
     
    @@ -2273,58 +2273,58 @@ Special Environments

    -
    (after! org
    -  (defun tdh-render-org-table-at-point ()
    -    (interactive)
    -    (save-excursion
    -      (beginning-of-line)
    -      ;; removes the overlay is already there
    -      (if (overlays-at (point))
    -          (delete-overlay (car (overlays-at (point))))
    +
      (after! org
    +    (defun tdh-render-org-table-at-point ()
    +      (interactive)
    +      (save-excursion
    +        (beginning-of-line)
    +        ;; removes the overlay is already there
    +        (if (overlays-at (point))
    +            (delete-overlay (car (overlays-at (point))))
     
    -        (let* ((element-type (org-element-type (org-element-at-point))))
    -          (if (and (not (eq element-type 'table))
    -                   (not (eq element-type 'table-row)))
    -              (error "not at an org table")
    +          (let* ((element-type (org-element-type (org-element-at-point))))
    +            (if (and (not (eq element-type 'table))
    +                     (not (eq element-type 'table-row)))
    +                (error "not at an org table")
     
    -            (while (not (eq 'table (org-element-type (org-element-at-point))))
    -              (forward-line -1))
    -            (tdh-render-org-table (org-element-at-point))
    -            )))))
    +              (while (not (eq 'table (org-element-type (org-element-at-point))))
    +                (forward-line -1))
    +              (tdh-render-org-table (org-element-at-point))
    +              )))))
     
     
    -  (defun tdh-render-org-table (table)
    -    (interactive)
    -    (let* ((begin (org-element-property :begin table))
    -           (end (let ((pos (org-element-property :end table)))
    -                  (goto-char pos)
    -                  (beginning-of-line)
    -                  ;; skip possible space after table
    -                  (while (not (looking-at " *[|#]"))
    -                    (setq pos (point))
    -                    (forward-line -1))
    -                  pos))
    -           (tabletxt (buffer-substring-no-properties begin end))
    -           (img (with-temp-buffer
    -                  (insert tabletxt)
    -                  (mark-whole-buffer)
    -                  (org-latex-convert-region-to-latex)
    -                  (org-latex-preview)
    -                  (goto-char (point-min))
    -                  (overlay-get  (car (overlays-at (point))) 'display)))
    -           (overlay (make-overlay begin end)))
    -      (overlay-put overlay 'display img)
    -      (forward-line -1))
    -    )
    +    (defun tdh-render-org-table (table)
    +      (interactive)
    +      (let* ((begin (org-element-property :begin table))
    +             (end (let ((pos (org-element-property :end table)))
    +                    (goto-char pos)
    +                    (beginning-of-line)
    +                    ;; skip possible space after table
    +                    (while (not (looking-at " *[|#]"))
    +                      (setq pos (point))
    +                      (forward-line -1))
    +                    pos))
    +             (tabletxt (buffer-substring-no-properties begin end))
    +             (img (with-temp-buffer
    +                    (insert tabletxt)
    +                    (mark-whole-buffer)
    +                    (org-latex-convert-region-to-latex)
    +                    (org-latex-preview)
    +                    (goto-char (point-min))
    +                    (overlay-get  (car (overlays-at (point))) 'display)))
    +             (overlay (make-overlay begin end)))
    +        (overlay-put overlay 'display img)
    +        (forward-line -1))
    +      )
     
     
    -  (defun tdh-render-org-tables-in-buffer ()
    -    (save-excursion
    -      (org-element-map (org-element-parse-buffer) 'table 'tdh-render-org-table)))
    +    (defun tdh-render-org-tables-in-buffer ()
    +      (save-excursion
    +        (org-element-map (org-element-parse-buffer) 'table 'tdh-render-org-table)))
     
    -  ;; Use F9 to globally generate tables
    -  (map! :map org-mode-map :n "<f8>" (lambda () (interactive) (tdh-render-org-table-at-point)))
    -  )
    +    ;; Use F9 to globally generate tables
    +    (map! :map org-mode-map :n "<f8>" (lambda () (interactive) (tdh-render-org-table-at-point)))
    +    )
     
    @@ -2334,9 +2334,9 @@ Special Environments

    Org Special Block Extras

    -
    (after! org
    -  (require 'org-special-block-extras)
    -  )
    +
      (after! org
    +    (require 'org-special-block-extras)
    +    )
     
    @@ -2346,47 +2346,47 @@ Special Environments

    Org Inline Task

    -
    (after! org
    -  (require 'org-inlinetask)
    -  )
    +
      (after! org
    +    (require 'org-inlinetask)
    +    )
     
    -
    -

    Org Links

    -
    +
    +

    Org Links

    +

    Youtube Links

    -
    (after! org
    -  (setq yt-iframe-format
    -        ;; You may want to change your width and height.
    -        (concat "<div class=\"yt\"><iframe width=\"100%%\""
    -                " height=\"100%%\""
    -                " src=\"https://www.youtube.com/embed/%s\""
    -                " frameborder=\"0\""
    -                " allowfullscreen>%s</iframe></div>"))
    +
      (after! org
    +    (setq yt-iframe-format
    +          ;; You may want to change your width and height.
    +          (concat "<div class=\"yt\"><iframe width=\"100%%\""
    +                  " height=\"100%%\""
    +                  " src=\"https://www.youtube.com/embed/%s\""
    +                  " frameborder=\"0\""
    +                  " allowfullscreen>%s</iframe></div>"))
     
    -  (org-add-link-type
    -   "yt"
    -   (lambda (handle)
    -     (browse-url
    -      (concat "https://www.youtube.com/embed/"
    -              handle)))
    -   (lambda (path desc backend)
    -     (cl-case backend
    -       (html (format yt-iframe-format
    -                     path (or desc "")))
    -       (md (format "{{< youtube %s >}}"
    -                   path))
    -       (latex (format "\\href{%s}{%s}"
    -                      (concat "https://www.youtube.com/embed/"
    -                              path) (or desc "video"))))))
    -  )
    +    (org-add-link-type
    +     "yt"
    +     (lambda (handle)
    +       (browse-url
    +        (concat "https://www.youtube.com/embed/"
    +                handle)))
    +     (lambda (path desc backend)
    +       (cl-case backend
    +         (html (format yt-iframe-format
    +                       path (or desc "")))
    +         (md (format "{{< youtube %s >}}"
    +                     path))
    +         (latex (format "\\href{%s}{%s}"
    +                        (concat "https://www.youtube.com/embed/"
    +                                path) (or desc "video"))))))
    +    )
     
    @@ -2401,17 +2401,17 @@ Special Environments
    -
    (use-package! org-gcal
    -  :after org
    -  :init
    -  :config
    -  (setq org-gcal-client-id "396102378658-dcmbcmrnthbe925519otsjbd921otq0v.apps.googleusercontent.com"
    -        org-gcal-client-secret "4M5PWrbhQjwYEMXGK85lDYX9"
    -        org-gcal-file-alist '(("dehaeze.thomas@gmail.com" . "~/Cloud/org/gcal.org")
    -                              ("8kjmhe2ar0abnm054ill1fb0gc@group.calendar.google.com" . "~/Cloud/org/gcal_phd.org")))
    -  ;; Automatic fetch of the new events
    -  ;; (add-hook 'org-agenda-mode-hook (lambda () (org-gcal-fetch) ))
    -  )
    +
      (use-package! org-gcal
    +    :after org
    +    :init
    +    :config
    +    (setq org-gcal-client-id "396102378658-dcmbcmrnthbe925519otsjbd921otq0v.apps.googleusercontent.com"
    +          org-gcal-client-secret "4M5PWrbhQjwYEMXGK85lDYX9"
    +          org-gcal-file-alist '(("dehaeze.thomas@gmail.com" . "~/Cloud/org/gcal.org")
    +                                ("8kjmhe2ar0abnm054ill1fb0gc@group.calendar.google.com" . "~/Cloud/org/gcal_phd.org")))
    +    ;; Automatic fetch of the new events
    +    ;; (add-hook 'org-agenda-mode-hook (lambda () (org-gcal-fetch) ))
    +    )
     
    @@ -2435,15 +2435,15 @@ Special Environments

    Org Wild Notifier

    -
    (use-package! org-wild-notifier
    -  :after org
    -  :init
    -  (setq alert-default-style 'libnotify)
    -  :config
    -  (setq org-wild-notifier-alert-time '(10 5))
    -  (setq org-wild-notifier-notification-title "Org Agenda")
    -  (org-wild-notifier-mode)
    -)
    +
      (use-package! org-wild-notifier
    +    :after org
    +    :init
    +    (setq alert-default-style 'libnotify)
    +    :config
    +    (setq org-wild-notifier-alert-time '(10 5))
    +    (setq org-wild-notifier-notification-title "Org Agenda")
    +    (org-wild-notifier-mode)
    +  )
     
    @@ -2453,16 +2453,16 @@ Special Environments

    Orch

    -
    (use-package! web-server
    -  :init
    -  :config
    -)
    +
      (use-package! web-server
    +    :init
    +    :config
    +  )
     
    -
    (add-to-list 'load-path "~/.config/doom/packages/orch/")
    -(autoload 'orch-toggle "orch" nil t)
    +
      (add-to-list 'load-path "~/.config/doom/packages/orch/")
    +  (autoload 'orch-toggle "orch" nil t)
     
    @@ -2504,39 +2504,39 @@ Special Environments
    -
    (after! org
    -  (map! :map org-mode-map
    -   (:desc "Org Agenda"
    -     :ni "C-c a" 'org-agenda)
    -   (:desc "Archive"
    -     :n "C-c A" 'org-archive-subtree)
    -   (:desc "Org Capture"
    -     :ni "C-c c" 'org-capture)
    -   (:desc "Store Link"
    -     :ni "C-c l" 'org-store-link)
    -   (:desc "Narrow Subtree"
    -     :ni "C-c n" 'org-toggle-narrow-to-subtree)
    -   (:desc "Org Noter"
    -     :ni "C-c N" 'org-noter)
    -   (:desc "Align Block"
    -     :ni "C-c =" 'tdh-align-src-block)
    -   (:desc "Insert Reference"
    -     :ni "C-c r" 'org-ref-insert-ref-link)
    -   (:desc "Insert Image"
    -     :ni "C-c i" 'tdh-insert-image-org-link)
    -   (:desc "Insert Image SXIV"
    -     :ni "C-c I" 'tdh-insert-image-org-link-sxiv)
    -   (:desc "Link to next Figure"
    -     :ni "C-c f" 'tdh-insert-link-to-next-figure)
    -   (:desc "Link to previous Figure"
    -     :ni "C-c F" 'tdh-insert-link-to-previous-figure)
    -   (:desc "Insert Screenshot"
    -     :ni "C-c s" 'tdh-insert-screenshot-org-link)
    -   (:desc "Find Roam"
    -     :ni "C-c r" 'orb-find-non-ref-file)
    -   (:desc "Insert Roam"
    -     :ni "C-c R" 'orb-insert-non-ref)
    -   ))
    +
      (after! org
    +    (map! :map org-mode-map
    +     (:desc "Org Agenda"
    +       :ni "C-c a" 'org-agenda)
    +     (:desc "Archive"
    +       :n "C-c A" 'org-archive-subtree)
    +     (:desc "Org Capture"
    +       :ni "C-c c" 'org-capture)
    +     (:desc "Store Link"
    +       :ni "C-c l" 'org-store-link)
    +     (:desc "Narrow Subtree"
    +       :ni "C-c n" 'org-toggle-narrow-to-subtree)
    +     (:desc "Org Noter"
    +       :ni "C-c N" 'org-noter)
    +     (:desc "Align Block"
    +       :ni "C-c =" 'tdh-align-src-block)
    +     (:desc "Insert Reference"
    +       :ni "C-c r" 'org-ref-insert-ref-link)
    +     (:desc "Insert Image"
    +       :ni "C-c i" 'tdh-insert-image-org-link)
    +     (:desc "Insert Image SXIV"
    +       :ni "C-c I" 'tdh-insert-image-org-link-sxiv)
    +     (:desc "Link to next Figure"
    +       :ni "C-c f" 'tdh-insert-link-to-next-figure)
    +     (:desc "Link to previous Figure"
    +       :ni "C-c F" 'tdh-insert-link-to-previous-figure)
    +     (:desc "Insert Screenshot"
    +       :ni "C-c s" 'tdh-insert-screenshot-org-link)
    +     (:desc "Find Roam"
    +       :ni "C-c r" 'orb-find-non-ref-file)
    +     (:desc "Insert Roam"
    +       :ni "C-c R" 'orb-insert-non-ref)
    +     ))
     
    @@ -2548,11 +2548,11 @@ Special Environments Insert Link to paper

    -
    (defun tdh-insert-paper-org-link (paper)
    -  "Insert an org link to some paper, choosing the file with completion"
    -  (interactive
    -   (list (read-file-name "Paper: " "~/Cloud/pdfs/" nil t)))
    -  (insert (format "[[papers:%s]]" (file-name-base paper))))
    +
      (defun tdh-insert-paper-org-link (paper)
    +    "Insert an org link to some paper, choosing the file with completion"
    +    (interactive
    +     (list (read-file-name "Paper: " "~/Cloud/pdfs/" nil t)))
    +    (insert (format "[[papers:%s]]" (file-name-base paper))))
     
    @@ -2560,11 +2560,11 @@ Insert Link to paper Insert Link to notes

    -
    (defun tdh-insert-note-org-link (note)
    -  "Insert an org link to some note, choosing the file with completion"
    -  (interactive
    -   (list (read-file-name "Note: " "~/Cloud/pdfs/" nil t)))
    -  (insert (format "[[notes:%s]]" (file-name-base note))))
    +
      (defun tdh-insert-note-org-link (note)
    +    "Insert an org link to some note, choosing the file with completion"
    +    (interactive
    +     (list (read-file-name "Note: " "~/Cloud/pdfs/" nil t)))
    +    (insert (format "[[notes:%s]]" (file-name-base note))))
     
    @@ -2572,12 +2572,12 @@ Insert Link to notes Insert Image that is in the figs folder

    -
    (defun tdh-insert-image-org-link (img)
    -  "Insert an org image link, choosing the file with completion
    -and starting from `my-default-image-directory'."
    -  (interactive
    -   (list (file-relative-name (read-file-name "Image: " (concat default-directory "figs/")) default-directory)))
    -  (insert (format "[[file:%s]]" img)))
    +
      (defun tdh-insert-image-org-link (img)
    +    "Insert an org image link, choosing the file with completion
    +  and starting from `my-default-image-directory'."
    +    (interactive
    +     (list (file-relative-name (read-file-name "Image: " (concat default-directory "figs/")) default-directory)))
    +    (insert (format "[[file:%s]]" img)))
     
    @@ -2585,14 +2585,14 @@ Insert Image that is in the figs folder Insert Image that is in the figs folder using SXIV

    -
    (defun tdh-insert-image-org-link-sxiv ()
    -  "Insert an org image link, choosing the file with completion
    -and starting from `my-default-image-directory'."
    -  (interactive)
    -  (setq img (shell-command-to-string "ls figs/*.{jpg,jpeg,bmp,png,gif} 2> /dev/null | sxiv -i -t -o | tail -1 | tr -d '\n'"))
    -  (unless (equal "" img)
    -    (insert (format "[[file:%s]]" img)))
    -  )
    +
      (defun tdh-insert-image-org-link-sxiv ()
    +    "Insert an org image link, choosing the file with completion
    +  and starting from `my-default-image-directory'."
    +    (interactive)
    +    (setq img (shell-command-to-string "ls figs/*.{jpg,jpeg,bmp,png,gif} 2> /dev/null | sxiv -i -t -o | tail -1 | tr -d '\n'"))
    +    (unless (equal "" img)
    +      (insert (format "[[file:%s]]" img)))
    +    )
     
    @@ -2600,12 +2600,12 @@ Insert Image that is in the figs folder using SXIV Copy picture from phone folder using SXIV and insert it

    -
    (defun tdh-insert-phone-picture ()
    -  (interactive)
    -  (setq img (shell-command-to-string "~/.config/doom/bin/copy-phone-picture.sh"))
    -  (unless (equal "" img)
    -    (insert (format "[[file:%s]]" img)))
    -  )
    +
      (defun tdh-insert-phone-picture ()
    +    (interactive)
    +    (setq img (shell-command-to-string "~/.config/doom/bin/copy-phone-picture.sh"))
    +    (unless (equal "" img)
    +      (insert (format "[[file:%s]]" img)))
    +    )
     
    @@ -2613,19 +2613,19 @@ Copy picture from phone folder using SXIV and insert it Bash script for copying pictures taken by phone.

    -
    if [ -z "$1" ]; then
    -    oldpath=$(ls -t ~/Cloud/photos/phone/*.jpg | sxiv -i -t -o | tail -1);
    -else
    -    oldpath=$(ls -t $1 | sxiv -i -t -o | tail -1);
    -fi
    +
      if [ -z "$1" ]; then
    +      oldpath=$(ls -t ~/Cloud/photos/phone/*.jpg | sxiv -i -t -o | tail -1);
    +  else
    +      oldpath=$(ls -t $1 | sxiv -i -t -o | tail -1);
    +  fi
     
    -if [ -n "$oldpath" ]; then
    -    newfilename=$(basename $oldpath .jpg | rofi -i -dmenu -p "Filename")
    -    if [ -n "$newfilename" ]; then
    -        cp $oldpath "figs/$newfilename.jpg"
    -        printf "figs/$newfilename.jpg"
    -    fi
    -fi
    +  if [ -n "$oldpath" ]; then
    +      newfilename=$(basename $oldpath .jpg | rofi -i -dmenu -p "Filename")
    +      if [ -n "$newfilename" ]; then
    +          cp $oldpath "figs/$newfilename.jpg"
    +          printf "figs/$newfilename.jpg"
    +      fi
    +  fi
     
    @@ -2639,19 +2639,19 @@ Take Screenshot and insert a link:
    -
    (defun tdh-insert-screenshot-org-link ()
    -  "Capture screenshot and insert the resulting file.
    -The screenshot tool is determined by `org-download-screenshot-method'."
    -  (interactive)
    -  (if (string-match "_" (file-name-base buffer-file-name))
    -      (setq filename (read-string "Enter file name:" (car (split-string (file-name-base buffer-file-name) "_"))))
    -    (setq filename (read-string "Enter file name:")))
    -  (setq filepath (concat "./figs/" filename ".png"))
    -  (shell-command (concat "maim -u -s " filepath))
    -  (insert (format "#+name: fig:%s\n#+caption:\n[[file:%s]]" filename filepath))
    -  (search-backward "caption")
    -  (end-of-line)
    -  )
    +
      (defun tdh-insert-screenshot-org-link ()
    +    "Capture screenshot and insert the resulting file.
    +  The screenshot tool is determined by `org-download-screenshot-method'."
    +    (interactive)
    +    (if (string-match "_" (file-name-base buffer-file-name))
    +        (setq filename (read-string "Enter file name:" (car (split-string (file-name-base buffer-file-name) "_"))))
    +      (setq filename (read-string "Enter file name:")))
    +    (setq filepath (concat "./figs/" filename ".png"))
    +    (shell-command (concat "maim -u -s " filepath))
    +    (insert (format "#+name: fig:%s\n#+caption:\n[[file:%s]]" filename filepath))
    +    (search-backward "caption")
    +    (end-of-line)
    +    )
     
    @@ -2659,12 +2659,12 @@ Take Screenshot and insert a link: Insert link to next figure:

    -
    (defun tdh-insert-link-to-next-figure ()
    -  (interactive)
    -  (save-excursion
    -    (re-search-forward "^#\\+name:\s*\\(fig:.*\\)" nil t 1))
    -  (insert (concat "[[" (match-string 1) "]]"))
    -  )
    +
      (defun tdh-insert-link-to-next-figure ()
    +    (interactive)
    +    (save-excursion
    +      (re-search-forward "^#\\+name:\s*\\(fig:.*\\)" nil t 1))
    +    (insert (concat "[[" (match-string 1) "]]"))
    +    )
     
    @@ -2672,12 +2672,12 @@ Insert link to next figure: Insert link to previous figure:

    -
    (defun tdh-insert-link-to-previous-figure ()
    -  (interactive)
    -  (save-excursion
    -    (re-search-backward "^#\\+name:\s*\\(fig:.*\\)" nil t 1))
    -  (insert (concat "[[" (match-string 1) "]]"))
    -  )
    +
      (defun tdh-insert-link-to-previous-figure ()
    +    (interactive)
    +    (save-excursion
    +      (re-search-backward "^#\\+name:\s*\\(fig:.*\\)" nil t 1))
    +    (insert (concat "[[" (match-string 1) "]]"))
    +    )
     
    @@ -2685,17 +2685,17 @@ Insert link to previous figure: Map Keys

    -
    (after! org
    -  (map! :map org-mode-map
    -        (:prefix (",i" . "Insert")
    -        :n "p" 'tdh-insert-paper-org-link
    -        :n "n" 'tdh-insert-note-org-link
    -        :n "f" 'tdh-insert-image-org-link
    -        :n "F" 'tdh-insert-image-org-link-sxiv
    -        :n "i" 'tdh-insert-phone-picture
    -        :n "l" 'tdh-insert-link-to-next-figure
    -        :n "L" 'tdh-insert-link-to-previous-figure
    -        :n "s" 'tdh-insert-screenshot-org-link)))
    +
      (after! org
    +    (map! :map org-mode-map
    +          (:prefix (",i" . "Insert")
    +          :n "p" 'tdh-insert-paper-org-link
    +          :n "n" 'tdh-insert-note-org-link
    +          :n "f" 'tdh-insert-image-org-link
    +          :n "F" 'tdh-insert-image-org-link-sxiv
    +          :n "i" 'tdh-insert-phone-picture
    +          :n "l" 'tdh-insert-link-to-next-figure
    +          :n "L" 'tdh-insert-link-to-previous-figure
    +          :n "s" 'tdh-insert-screenshot-org-link)))
     
    @@ -2705,32 +2705,32 @@ Map Keys

    LaTeX ,l

    -
    (defun tdh-latex-watch ()
    -  "Watch LaTeX file using latexmk"
    -  (interactive)
    -  (start-process-shell-command "latexmk-watch" "*latexmk-watch-output*"
    -                               "latexmk" (format "-pdflatex=\"xelatex -synctex=1 -shell-escape -interaction nonstopmode  -output-directory='%s'\" -pdf -pvc -bibtex -f %s.tex"
    -                                                 (file-name-directory buffer-file-name)
    -                                                 (file-name-base buffer-file-name))))
    +
      (defun tdh-latex-watch ()
    +    "Watch LaTeX file using latexmk"
    +    (interactive)
    +    (start-process-shell-command "latexmk-watch" "*latexmk-watch-output*"
    +                                 "latexmk" (format "-pdflatex=\"xelatex -synctex=1 -shell-escape -interaction nonstopmode  -output-directory='%s'\" -pdf -pvc -bibtex -f %s.tex"
    +                                                   (file-name-directory buffer-file-name)
    +                                                   (file-name-base buffer-file-name))))
     
    -
    (defun tdh-latex-watch-kill ()
    -  "Kill the currently running TeX job."
    -  (interactive)
    -  (delete-process "latexmk-watch")
    -  )
    +
      (defun tdh-latex-watch-kill ()
    +    "Kill the currently running TeX job."
    +    (interactive)
    +    (delete-process "latexmk-watch")
    +    )
     
    -
    (after! org
    -  (map! :map org-mode-map
    -        (:prefix (",l" . "LaTeX")
    -        :n "w" 'tdh-latex-watch
    -        :n "k" 'tdh-latex-watch-kill
    -        :n "l" 'org-latex-export-to-latex)))
    +
      (after! org
    +    (map! :map org-mode-map
    +          (:prefix (",l" . "LaTeX")
    +          :n "w" 'tdh-latex-watch
    +          :n "k" 'tdh-latex-watch-kill
    +          :n "l" 'org-latex-export-to-latex)))
     
    @@ -2740,31 +2740,31 @@ Map Keys

    Org LaTeX Automatic fragment

    -
    (use-package! org-fragtog
    -  :after org
    -  :config
    -  (add-hook 'org-mode-hook 'org-fragtog-mode)
    -)
    +
      (use-package! org-fragtog
    +    :after org
    +    :config
    +    (add-hook 'org-mode-hook 'org-fragtog-mode)
    +  )
     
    -
    (defun tdh-automatic-latex-fragment-activate ()
    -  (interactive)
    -  (add-hook 'org-mode-hook 'org-fragtog-mode))
    +
      (defun tdh-automatic-latex-fragment-activate ()
    +    (interactive)
    +    (add-hook 'org-mode-hook 'org-fragtog-mode))
     
    -(defun tdh-automatic-latex-fragment-deactivate ()
    -  (interactive)
    -  (remove-hook 'org-mode-hook 'org-fragtog-mode))
    +  (defun tdh-automatic-latex-fragment-deactivate ()
    +    (interactive)
    +    (remove-hook 'org-mode-hook 'org-fragtog-mode))
     
    -
    (after! org
    -  (map! :map org-mode-map
    -        (:prefix (",l" . "LaTeX")
    -        :n "f" 'tdh-automatic-latex-fragment-activate
    -        :n "F" 'tdh-automatic-latex-fragment-deactivate)))
    +
      (after! org
    +    (map! :map org-mode-map
    +          (:prefix (",l" . "LaTeX")
    +          :n "f" 'tdh-automatic-latex-fragment-activate
    +          :n "F" 'tdh-automatic-latex-fragment-deactivate)))
     
    @@ -2774,13 +2774,13 @@ Map Keys

    Bibtex ,r

    -
    (after! org
    -  (map! :map org-mode-map
    -        (:prefix (",r" . "References")
    -        :n "b" 'helm-bibtex
    -        :n "B" 'helm-bibtex-with-local-bibliography
    -        :n "f" 'tdh-helm-bibtex-favorites
    -        :n "r" 'helm-resume)))
    +
      (after! org
    +    (map! :map org-mode-map
    +          (:prefix (",r" . "References")
    +          :n "b" 'helm-bibtex
    +          :n "B" 'helm-bibtex-with-local-bibliography
    +          :n "f" 'tdh-helm-bibtex-favorites
    +          :n "r" 'helm-resume)))
     
    @@ -2790,17 +2790,17 @@ Map Keys

    Open ranger in current directory ,o

    -
    (defun tdh-open-ranger-in-workdir ()
    -  (interactive)
    -  (call-process-shell-command
    -  (concat "termite --directory=" default-directory " --exec=ranger") nil 0))
    +
      (defun tdh-open-ranger-in-workdir ()
    +    (interactive)
    +    (call-process-shell-command
    +    (concat "termite --directory=" default-directory " --exec=ranger") nil 0))
     
    -
    (after! org
    -  (map! :map org-mode-map
    -        :n ",o" 'tdh-open-ranger-in-workdir))
    +
      (after! org
    +    (map! :map org-mode-map
    +          :n ",o" 'tdh-open-ranger-in-workdir))
     
    @@ -2813,10 +2813,10 @@ Map Keys Open PDF output with zathura

    -
    (defun tdh-open-org-pdf-externally ()
    -  (interactive)
    -  (call-process "zathura" nil 0 nil (concat (file-name-sans-extension (buffer-file-name)) ".pdf"))
    -  )
    +
      (defun tdh-open-org-pdf-externally ()
    +    (interactive)
    +    (call-process "zathura" nil 0 nil (concat (file-name-sans-extension (buffer-file-name)) ".pdf"))
    +    )
     
    @@ -2824,19 +2824,19 @@ Open PDF output with zathura Open HTML output externally

    -
    (defun tdh-open-org-html-externally ()
    -    (interactive)
    -    (call-process "xdg-open" nil 0 nil (concat (file-name-sans-extension (buffer-file-name)) ".html"))
    -    )
    +
      (defun tdh-open-org-html-externally ()
    +      (interactive)
    +      (call-process "xdg-open" nil 0 nil (concat (file-name-sans-extension (buffer-file-name)) ".html"))
    +      )
     
    -
    (after! org
    -  (map! :map org-mode-map
    -        (:prefix (",v" . "View")
    -        :n "p" 'tdh-open-org-pdf-externally
    -        :n "h" 'tdh-open-org-html-externally)))
    +
      (after! org
    +    (map! :map org-mode-map
    +          (:prefix (",v" . "View")
    +          :n "p" 'tdh-open-org-pdf-externally
    +          :n "h" 'tdh-open-org-html-externally)))
     
    @@ -2855,11 +2855,11 @@ Open HTML output externally Don’t ask for confirmation when evaluating following blocs

    -
    (defun tdh-org-confirm-babel-evaluate (lang body)
    -  (not (member lang '("emacs-lisp" "latex" "matlab" "sh" "latex-macros" "python"))))
    +
      (defun tdh-org-confirm-babel-evaluate (lang body)
    +    (not (member lang '("emacs-lisp" "latex" "matlab" "sh" "latex-macros" "python"))))
     
    -(after! org
    -  (setq org-confirm-babel-evaluate 'tdh-org-confirm-babel-evaluate))
    +  (after! org
    +    (setq org-confirm-babel-evaluate 'tdh-org-confirm-babel-evaluate))
     
    @@ -2867,8 +2867,8 @@ Don’t ask for confirmation when evaluating following blocs Default header arguments.

    -
    (after! org
    -  (setq org-babel-default-header-args '((:eval . "no-export"))))
    +
      (after! org
    +    (setq org-babel-default-header-args '((:eval . "no-export"))))
     
    @@ -2876,8 +2876,8 @@ Default header arguments. Use the current window for C-c ’ source editing

    -
    (after! org
    -  (setq org-src-window-setup 'current-window))
    +
      (after! org
    +    (setq org-src-window-setup 'current-window))
     
    @@ -2887,16 +2887,16 @@ Use the current window for C-c ’ source editing

    Appearance of source blocks

    -
    (defun tdh-org-prettify-symbols ()
    -  (mapc (apply-partially 'add-to-list 'prettify-symbols-alist)
    -        (cl-reduce 'append
    -                   (mapcar (lambda (x) (list x (cons (upcase (car x)) (cdr x))))
    -                           `(("#+begin_src" . ?✎)
    -                             ("#+end_src"   . ?□)
    -                             ("#+begin_quote" . ?«)
    -                             ("#+end_quote" . ?»)))))
    -  (turn-on-prettify-symbols-mode))
    -(add-hook 'org-mode-hook #'tdh-org-prettify-symbols)
    +
      (defun tdh-org-prettify-symbols ()
    +    (mapc (apply-partially 'add-to-list 'prettify-symbols-alist)
    +          (cl-reduce 'append
    +                     (mapcar (lambda (x) (list x (cons (upcase (car x)) (cdr x))))
    +                             `(("#+begin_src" . ?✎)
    +                               ("#+end_src"   . ?□)
    +                               ("#+begin_quote" . ?«)
    +                               ("#+end_quote" . ?»)))))
    +    (turn-on-prettify-symbols-mode))
    +  (add-hook 'org-mode-hook #'tdh-org-prettify-symbols)
     
    @@ -2906,11 +2906,11 @@ Use the current window for C-c ’ source editing

    Indentation

    -
    (after! org
    -  (setq org-edit-src-content-indentation 2
    -        org-src-tab-acts-natively nil
    -        org-src-preserve-indentation nil)
    -  )
    +
      (after! org
    +    (setq org-edit-src-content-indentation 2
    +          org-src-tab-acts-natively nil
    +          org-src-preserve-indentation nil)
    +    )
     
    @@ -2924,8 +2924,8 @@ Add all named source blocks to org-babel-library-of-babel (
    -
    (after! org
    -  (org-babel-lob-ingest "~/.config/literate-dotfiles/emacs-library-babel.org"))
    +
      (after! org
    +    (org-babel-lob-ingest "~/.config/literate-dotfiles/emacs-library-babel.org"))
     
    @@ -2936,9 +2936,9 @@ Add all named source blocks to org-babel-library-of-babel (
    Org-Babel Matlab
    -
    (after! org
    -  (setq org-babel-matlab-shell-command "/home/thomas/.local/bin/matlab -softwareopengl -nodesktop -nosplash")
    -  )
    +
      (after! org
    +    (setq org-babel-matlab-shell-command "/home/thomas/.local/bin/matlab -softwareopengl -nodesktop -nosplash")
    +    )
     
    @@ -2946,19 +2946,19 @@ Add all named source blocks to org-babel-library-of-babel (
    -
    (after! org
    -  (setq org-babel-default-header-args:matlab
    -        '((:results . "none")
    -          (:session . "*MATLAB*")
    -          (:comments . "org")
    -          (:exports . "both")
    -          (:cache .   "no")
    -          (:noweb . "no")
    -          (:hlines . "no")
    -          (:tangle . "yes")
    -          (:mkdir . "yes")
    -          (:eval . "no-export")))
    -  )
    +
      (after! org
    +    (setq org-babel-default-header-args:matlab
    +          '((:results . "none")
    +            (:session . "*MATLAB*")
    +            (:comments . "org")
    +            (:exports . "both")
    +            (:cache .   "no")
    +            (:noweb . "no")
    +            (:hlines . "no")
    +            (:tangle . "yes")
    +            (:mkdir . "yes")
    +            (:eval . "no-export")))
    +    )
     
    @@ -2966,89 +2966,89 @@ Default options for Matlab code Better format the output results for Matlab (
    link).

    -
    (after! org
    -  (defun org-babel-octave-evaluate-session
    -      (session body result-type &optional matlabp)
    -    "Evaluate BODY in SESSION."
    -    (let* ((tmp-file (org-babel-temp-file (if matlabp "matlab-" "octave-")))
    -           (wait-file (org-babel-temp-file "matlab-emacs-link-wait-signal-"))
    -           (full-body
    -            (pcase result-type
    -              (`output
    -               (mapconcat
    -                #'org-babel-chomp
    -                (list (if matlabp
    -                          (multi-replace-regexp-in-string
    -                           '(("%.*$"                      . "")    ;Remove comments
    -                             (";\\s-*\n+"                 . "; ")  ;Concatenate lines
    -                             ("\\(\\.\\)\\{3\\}\\s-*\n+"  . " ")   ;Handle continuations
    -                             (",*\\s-*\n+"                . ", ")) ;Concatenate lines
    -                           body)
    -                        body)
    -                      org-babel-octave-eoe-indicator) "\n"))
    -              (`value
    -               (if (and matlabp org-babel-matlab-with-emacs-link)
    -                   (concat
    -                    (format org-babel-matlab-emacs-link-wrapper-method
    -                            body
    -                            (org-babel-process-file-name tmp-file 'noquote)
    -                            (org-babel-process-file-name tmp-file 'noquote) wait-file) "\n")
    -                 (mapconcat
    +
      (after! org
    +    (defun org-babel-octave-evaluate-session
    +        (session body result-type &optional matlabp)
    +      "Evaluate BODY in SESSION."
    +      (let* ((tmp-file (org-babel-temp-file (if matlabp "matlab-" "octave-")))
    +             (wait-file (org-babel-temp-file "matlab-emacs-link-wait-signal-"))
    +             (full-body
    +              (pcase result-type
    +                (`output
    +                 (mapconcat
                       #'org-babel-chomp
    -                  (list (format org-babel-octave-wrapper-method
    -                                body
    -                                (org-babel-process-file-name tmp-file 'noquote)
    -                                (org-babel-process-file-name tmp-file 'noquote))
    -                        org-babel-octave-eoe-indicator) "\n")))))
    -           (raw (if (and matlabp org-babel-matlab-with-emacs-link)
    -                    (save-window-excursion
    -                      (with-temp-buffer
    -                        (insert full-body)
    -                        (write-region "" 'ignored wait-file nil nil nil 'excl)
    -                        (matlab-shell-run-region (point-min) (point-max))
    -                        (message "Waiting for Matlab Emacs Link")
    -                        (while (file-exists-p wait-file) (sit-for 0.01))
    -                        "")) ;; matlab-shell-run-region doesn't seem to
    -                  ;; make *matlab* buffer contents easily
    -                  ;; available, so :results output currently
    -                  ;; won't work
    -                  (org-babel-comint-with-output
    -                      (session
    -                       (if matlabp
    -                           org-babel-octave-eoe-indicator
    -                         org-babel-octave-eoe-output)
    -                       t full-body)
    -                    (insert full-body) (comint-send-input nil t)))) results)
    -      (pcase result-type
    -        (`value
    -         (org-babel-octave-import-elisp-from-file tmp-file))
    -        (`output
    -         (setq results
    -               (if matlabp
    -                   (cdr (reverse (delete "" (mapcar #'org-strip-quotes
    -                                                    (mapcar #'org-trim (remove-car-upto-newline raw))))))
    -                 (cdr (member org-babel-octave-eoe-output
    -                              (reverse (mapcar #'org-strip-quotes
    -                                               (mapcar #'org-trim raw)))))))
    -         (mapconcat #'identity (reverse results) "\n")))))
    +                  (list (if matlabp
    +                            (multi-replace-regexp-in-string
    +                             '(("%.*$"                      . "")    ;Remove comments
    +                               (";\\s-*\n+"                 . "; ")  ;Concatenate lines
    +                               ("\\(\\.\\)\\{3\\}\\s-*\n+"  . " ")   ;Handle continuations
    +                               (",*\\s-*\n+"                . ", ")) ;Concatenate lines
    +                             body)
    +                          body)
    +                        org-babel-octave-eoe-indicator) "\n"))
    +                (`value
    +                 (if (and matlabp org-babel-matlab-with-emacs-link)
    +                     (concat
    +                      (format org-babel-matlab-emacs-link-wrapper-method
    +                              body
    +                              (org-babel-process-file-name tmp-file 'noquote)
    +                              (org-babel-process-file-name tmp-file 'noquote) wait-file) "\n")
    +                   (mapconcat
    +                    #'org-babel-chomp
    +                    (list (format org-babel-octave-wrapper-method
    +                                  body
    +                                  (org-babel-process-file-name tmp-file 'noquote)
    +                                  (org-babel-process-file-name tmp-file 'noquote))
    +                          org-babel-octave-eoe-indicator) "\n")))))
    +             (raw (if (and matlabp org-babel-matlab-with-emacs-link)
    +                      (save-window-excursion
    +                        (with-temp-buffer
    +                          (insert full-body)
    +                          (write-region "" 'ignored wait-file nil nil nil 'excl)
    +                          (matlab-shell-run-region (point-min) (point-max))
    +                          (message "Waiting for Matlab Emacs Link")
    +                          (while (file-exists-p wait-file) (sit-for 0.01))
    +                          "")) ;; matlab-shell-run-region doesn't seem to
    +                    ;; make *matlab* buffer contents easily
    +                    ;; available, so :results output currently
    +                    ;; won't work
    +                    (org-babel-comint-with-output
    +                        (session
    +                         (if matlabp
    +                             org-babel-octave-eoe-indicator
    +                           org-babel-octave-eoe-output)
    +                         t full-body)
    +                      (insert full-body) (comint-send-input nil t)))) results)
    +        (pcase result-type
    +          (`value
    +           (org-babel-octave-import-elisp-from-file tmp-file))
    +          (`output
    +           (setq results
    +                 (if matlabp
    +                     (cdr (reverse (delete "" (mapcar #'org-strip-quotes
    +                                                      (mapcar #'org-trim (remove-car-upto-newline raw))))))
    +                   (cdr (member org-babel-octave-eoe-output
    +                                (reverse (mapcar #'org-strip-quotes
    +                                                 (mapcar #'org-trim raw)))))))
    +           (mapconcat #'identity (reverse results) "\n")))))
     
    -  (defun remove-car-upto-newline (raw)
    -    "Truncate each string in a list of strings up to the first newline"
    -    (cons (mapconcat #'identity
    -                     (cdr (split-string-and-unquote (car raw) "\n"))
    -                     "\n") (cdr raw)))
    +    (defun remove-car-upto-newline (raw)
    +      "Truncate each string in a list of strings up to the first newline"
    +      (cons (mapconcat #'identity
    +                       (cdr (split-string-and-unquote (car raw) "\n"))
    +                       "\n") (cdr raw)))
     
    -  (defun multi-replace-regexp-in-string (replacements-list string &optional rest)
    -    (interactive)
    -    "Replace multiple regexps in a string. Order matters."
    -    (if (null replacements-list)
    -        string
    -      (let ((regex (caar replacements-list))
    -            (replacement (cdar replacements-list)))
    -        (multi-replace-regexp-in-string (cdr replacements-list)
    -                                        (replace-regexp-in-string regex replacement
    -                                                                  string rest)))))
    -  )
    +    (defun multi-replace-regexp-in-string (replacements-list string &optional rest)
    +      (interactive)
    +      "Replace multiple regexps in a string. Order matters."
    +      (if (null replacements-list)
    +          string
    +        (let ((regex (caar replacements-list))
    +              (replacement (cdar replacements-list)))
    +          (multi-replace-regexp-in-string (cdr replacements-list)
    +                                          (replace-regexp-in-string regex replacement
    +                                                                    string rest)))))
    +    )
     
    @@ -3061,13 +3061,13 @@ Better format the output results for Matlab ( -
    (defun tdh-matlab-whos (&optional start end)
    -"Get what is in the Matlab workspace"
    -  (interactive)
    -  (if (use-region-p)
    -    (let ((regionp (buffer-substring (region-beginning) (region-end))))
    -      (process-send-string "*MATLAB*" (concat "whosEmacs " regionp "\n")))
    -    (process-send-string "*MATLAB*" (concat "whosEmacs" "\n"))))
    +
      (defun tdh-matlab-whos (&optional start end)
    +  "Get what is in the Matlab workspace"
    +    (interactive)
    +    (if (use-region-p)
    +      (let ((regionp (buffer-substring (region-beginning) (region-end))))
    +        (process-send-string "*MATLAB*" (concat "whosEmacs " regionp "\n")))
    +      (process-send-string "*MATLAB*" (concat "whosEmacs" "\n"))))
     
    @@ -3075,14 +3075,14 @@ Better format the output results for Matlab (
    -
    (defun tdh-matlab-help (&optional start end)
    -  "Get help on the selected function"
    -  (interactive)
    -  (if (use-region-p)
    -    (let ((regionp (buffer-substring (region-beginning) (region-end))))
    -        (process-send-string "*MATLAB*" (concat "help " regionp "\n")))
    -    (process-send-string "*MATLAB*" (concat "help " (read-string "Matlab help:") "\n")))
    -  )
    +
      (defun tdh-matlab-help (&optional start end)
    +    "Get help on the selected function"
    +    (interactive)
    +    (if (use-region-p)
    +      (let ((regionp (buffer-substring (region-beginning) (region-end))))
    +          (process-send-string "*MATLAB*" (concat "help " regionp "\n")))
    +      (process-send-string "*MATLAB*" (concat "help " (read-string "Matlab help:") "\n")))
    +    )
     
    @@ -3101,10 +3101,10 @@ Specify a Matlab command to run Specify a Matlab command to run and show output in mini-buffer

    -
    (defun tdh-matlab-run-command-show-output ()
    -  "Prompt user to enter a matlab command"
    -  (interactive)
    -  (process-send-string "*MATLAB*" (concat "evalEmacs('" (read-string "Matlab Command: ") "')\n")))
    +
      (defun tdh-matlab-run-command-show-output ()
    +    "Prompt user to enter a matlab command"
    +    (interactive)
    +    (process-send-string "*MATLAB*" (concat "evalEmacs('" (read-string "Matlab Command: ") "')\n")))
     
    @@ -3132,14 +3132,14 @@ Org-Babel Tangle File and Execute with Matlab Map Functions

    -
    (after! org
    -  (map! :map org-mode-map
    -        (:prefix (",m" . "Matlab")
    -        :n  "e" 'tdh-matlab-run-command
    -        :n  "E" 'tdh-matlab-run-command-show-output
    -        :n  "T" 'tdh-matlab-tangle-and-execute
    -        :nv "h" 'tdh-matlab-help
    -        :nv "w" 'tdh-matlab-whos)))
    +
      (after! org
    +    (map! :map org-mode-map
    +          (:prefix (",m" . "Matlab")
    +          :n  "e" 'tdh-matlab-run-command
    +          :n  "E" 'tdh-matlab-run-command-show-output
    +          :n  "T" 'tdh-matlab-tangle-and-execute
    +          :nv "h" 'tdh-matlab-help
    +          :nv "w" 'tdh-matlab-whos)))
     
    @@ -3158,24 +3158,24 @@ when inside a source block. Otherwise, keep the normal behavior for ctrl-r

    -
    (defun tdh-ctrl-ret ()
    -  (interactive)
    -  (defun tdh-in-src-block-p ()
    -    "Returns t when the point is inside a source code block"
    -    (string= "src" (org-in-block-p '("src"))))
    +
      (defun tdh-ctrl-ret ()
    +    (interactive)
    +    (defun tdh-in-src-block-p ()
    +      "Returns t when the point is inside a source code block"
    +      (string= "src" (org-in-block-p '("src"))))
     
    -  (if (tdh-in-src-block-p)
    -      (progn
    -        (org-babel-execute-src-block)
    -        (org-babel-next-src-block))
    -    (+org--insert-item 'below)))
    +    (if (tdh-in-src-block-p)
    +        (progn
    +          (org-babel-execute-src-block)
    +          (org-babel-next-src-block))
    +      (+org--insert-item 'below)))
     
    -
    (map! :after evil-org
    -      :map evil-org-mode-map
    -      :n "<C-return>" #'tdh-ctrl-ret)
    +
      (map! :after evil-org
    +        :map evil-org-mode-map
    +        :n "<C-return>" #'tdh-ctrl-ret)
     
    @@ -3189,65 +3189,65 @@ when inside a source block. Otherwise, keep the normal behavior for ctrl-r

    tdh-org-babel-execute-matlab-background

    -
    (defun tdh-org-babel-execute-matlab-background (&optional arg info params)
    -  (interactive)
    -  (let* ((org-babel-current-src-block-location
    -      (or org-babel-current-src-block-location
    -          (nth 5 info)
    -          (org-babel-where-is-src-block-head)))
    -     (info (if info (copy-tree info) (org-babel-get-src-block-info))))
    -    ;; Merge PARAMS with INFO before considering source block
    -    ;; evaluation since both could disagree.
    -    (cl-callf org-babel-merge-params (nth 2 info) params)
    -    (when (org-babel-check-evaluate info)
    -      (cl-callf org-babel-process-params (nth 2 info))
    -      (let* ((params (nth 2 info))
    -         (cache (let ((c (cdr (assq :cache params))))
    -              (and (not arg) c (string= "yes" c))))
    -         (new-hash (and cache (org-babel-sha1-hash info :eval)))
    -         (old-hash (and cache (org-babel-current-result-hash)))
    -         (current-cache (and new-hash (equal new-hash old-hash))))
    -    (cond
    -     (current-cache
    -      (save-excursion           ;Return cached result.
    -        (goto-char (org-babel-where-is-src-block-result nil info))
    -        (forward-line)
    -        (skip-chars-forward " \t")
    -        (let ((result (org-babel-read-result)))
    -          (message (replace-regexp-in-string "%" "%%" (format "%S" result)))
    -          result)))
    -     ((org-babel-confirm-evaluate info)
    -      (let* ((lang (nth 0 info))
    -         (result-params (cdr (assq :result-params params)))
    -         ;; Expand noweb references in BODY and remove any
    -         ;; coderef.
    -         (body
    -          (let ((coderef (nth 6 info))
    -            (expand
    -             (if (org-babel-noweb-p params :eval)
    -                 (org-babel-expand-noweb-references info)
    -               (nth 1 info))))
    -            (if (not coderef) expand
    -              (replace-regexp-in-string
    -               (org-src-coderef-regexp coderef) "" expand nil nil 1))))
    -         (dir (cdr (assq :dir params)))
    -         (mkdirp (cdr (assq :mkdirp params)))
    -         (default-directory
    -           (cond
    -            ((not dir) default-directory)
    -            ((member mkdirp '("no" "nil" nil))
    -             (file-name-as-directory (expand-file-name dir)))
    -            (t
    -             (let ((d (file-name-as-directory (expand-file-name dir))))
    -               (make-directory d 'parents)
    -               d))))
    -         (cmd (intern (concat "org-babel-execute:" lang)))
    -         result)
    -        (process-send-string "*MATLAB*" (concat body "\n"))
    -        result))
    -     )))
    -    )
    -  )
    +
      (defun tdh-org-babel-execute-matlab-background (&optional arg info params)
    +    (interactive)
    +    (let* ((org-babel-current-src-block-location
    +        (or org-babel-current-src-block-location
    +            (nth 5 info)
    +            (org-babel-where-is-src-block-head)))
    +       (info (if info (copy-tree info) (org-babel-get-src-block-info))))
    +      ;; Merge PARAMS with INFO before considering source block
    +      ;; evaluation since both could disagree.
    +      (cl-callf org-babel-merge-params (nth 2 info) params)
    +      (when (org-babel-check-evaluate info)
    +        (cl-callf org-babel-process-params (nth 2 info))
    +        (let* ((params (nth 2 info))
    +           (cache (let ((c (cdr (assq :cache params))))
    +                (and (not arg) c (string= "yes" c))))
    +           (new-hash (and cache (org-babel-sha1-hash info :eval)))
    +           (old-hash (and cache (org-babel-current-result-hash)))
    +           (current-cache (and new-hash (equal new-hash old-hash))))
    +      (cond
    +       (current-cache
    +        (save-excursion         ;Return cached result.
    +          (goto-char (org-babel-where-is-src-block-result nil info))
    +          (forward-line)
    +          (skip-chars-forward " \t")
    +          (let ((result (org-babel-read-result)))
    +            (message (replace-regexp-in-string "%" "%%" (format "%S" result)))
    +            result)))
    +       ((org-babel-confirm-evaluate info)
    +        (let* ((lang (nth 0 info))
    +           (result-params (cdr (assq :result-params params)))
    +           ;; Expand noweb references in BODY and remove any
    +           ;; coderef.
    +           (body
    +            (let ((coderef (nth 6 info))
    +              (expand
    +               (if (org-babel-noweb-p params :eval)
    +                   (org-babel-expand-noweb-references info)
    +                 (nth 1 info))))
    +              (if (not coderef) expand
    +                (replace-regexp-in-string
    +                 (org-src-coderef-regexp coderef) "" expand nil nil 1))))
    +           (dir (cdr (assq :dir params)))
    +           (mkdirp (cdr (assq :mkdirp params)))
    +           (default-directory
    +             (cond
    +              ((not dir) default-directory)
    +              ((member mkdirp '("no" "nil" nil))
    +               (file-name-as-directory (expand-file-name dir)))
    +              (t
    +               (let ((d (file-name-as-directory (expand-file-name dir))))
    +                 (make-directory d 'parents)
    +                 d))))
    +           (cmd (intern (concat "org-babel-execute:" lang)))
    +           result)
    +          (process-send-string "*MATLAB*" (concat body "\n"))
    +          result))
    +       )))
    +      )
    +    )
     
    @@ -3257,11 +3257,11 @@ when inside a source block. Otherwise, keep the normal behavior for ctrl-r

    tdh-matlab-execute-selected

    -
    (defun tdh-matlab-execute-selected (start end)
    -"Execute selected text in the *MATLAB* buffer"
    -  (interactive "r")
    -  (let ((regionp (buffer-substring start end)))
    -      (process-send-string "*MATLAB*" (concat regionp "\n"))))
    +
      (defun tdh-matlab-execute-selected (start end)
    +  "Execute selected text in the *MATLAB* buffer"
    +    (interactive "r")
    +    (let ((regionp (buffer-substring start end)))
    +        (process-send-string "*MATLAB*" (concat regionp "\n"))))
     
    @@ -3284,30 +3284,30 @@ if no region is selected, it runs all the code blocks and goes to the next block
    -
    (defun tdh-ctrl-shift-ret ()
    -  (interactive)
    -  (defun tdh-in-src-block-p ()
    -    "Returns t when the point is inside a source code block"
    -    (string= "src" (org-in-block-p '("src"))))
    +
      (defun tdh-ctrl-shift-ret ()
    +    (interactive)
    +    (defun tdh-in-src-block-p ()
    +      "Returns t when the point is inside a source code block"
    +      (string= "src" (org-in-block-p '("src"))))
     
    -  (if (tdh-in-src-block-p)
    -      (let ((lang (nth 0 (org-babel-get-src-block-info))))
    -        (if (string= lang "matlab")
    -            (if (region-active-p)
    -                (tdh-matlab-execute-selected (region-beginning) (region-end))
    -              (progn (tdh-org-babel-execute-matlab-background)
    -                     (org-babel-next-src-block)))
    -          (tdh-ctrl-ret))
    -        )
    -    )
    -  )
    +    (if (tdh-in-src-block-p)
    +        (let ((lang (nth 0 (org-babel-get-src-block-info))))
    +          (if (string= lang "matlab")
    +              (if (region-active-p)
    +                  (tdh-matlab-execute-selected (region-beginning) (region-end))
    +                (progn (tdh-org-babel-execute-matlab-background)
    +                       (org-babel-next-src-block)))
    +            (tdh-ctrl-ret))
    +          )
    +      )
    +    )
     
    -
    (map! :after evil-org
    -      :map evil-org-mode-map
    -      :n "<C-S-return>" #'tdh-ctrl-shift-ret)
    +
      (map! :after evil-org
    +        :map evil-org-mode-map
    +        :n "<C-S-return>" #'tdh-ctrl-shift-ret)
     
    @@ -3318,18 +3318,18 @@ if no region is selected, it runs all the code blocks and goes to the next block

    Align Source Blocks

    -
    (defun tdh-align-src-block ()
    -  (interactive)
    -  (defun tdh-in-src-block-p ()
    -    "Returns t when the point is inside a source code block"
    -    (string= "src" (org-in-block-p '("src"))))
    +
      (defun tdh-align-src-block ()
    +    (interactive)
    +    (defun tdh-in-src-block-p ()
    +      "Returns t when the point is inside a source code block"
    +      (string= "src" (org-in-block-p '("src"))))
     
    -  (if (tdh-in-src-block-p)
    -      (progn
    -        (org-edit-special)
    -        (evil-indent (point-min) (point-max))
    -        (org-edit-src-exit))
    -    (org-table-eval-formula)))
    +    (if (tdh-in-src-block-p)
    +        (progn
    +          (org-edit-special)
    +          (evil-indent (point-min) (point-max))
    +          (org-edit-src-exit))
    +      (org-table-eval-formula)))
     
    @@ -3342,14 +3342,14 @@ if no region is selected, it runs all the code blocks and goes to the next block Org-Babel Tangle Sub-tree

    -
    (defun tdh-org-babel-tangle-subtree ()
    -  "Tangle the current subtree"
    -  (interactive)
    -  (progn
    -    (org-narrow-to-subtree)
    -    (org-babel-tangle)
    -    (widen))
    -  )
    +
      (defun tdh-org-babel-tangle-subtree ()
    +    "Tangle the current subtree"
    +    (interactive)
    +    (progn
    +      (org-narrow-to-subtree)
    +      (org-babel-tangle)
    +      (widen))
    +    )
     
    @@ -3357,19 +3357,19 @@ Org-Babel Tangle Sub-tree Org-Tangle and Org-Babel Jump to Tangle File

    -
    (defun tdh-org-babel-jump-to-tangle-file ()
    -  "Jump to tangle file for the source block at point."
    -  (interactive)
    -  (let (file org-babel-pre-tangle-hook org-babel-post-tangle-hook)
    -    (cl-letf (((symbol-function 'write-region) (lambda (start end filename &rest _ignore)
    -                                                 (setq file filename)))
    -              ((symbol-function 'delete-file) #'ignore))
    -      (org-babel-tangle '(4)))
    -    (when file
    -      (setq file (expand-file-name file))
    -      (if (file-readable-p file)
    -          (find-file file)
    -        (error "Cannot open tangle file %S" file)))))
    +
      (defun tdh-org-babel-jump-to-tangle-file ()
    +    "Jump to tangle file for the source block at point."
    +    (interactive)
    +    (let (file org-babel-pre-tangle-hook org-babel-post-tangle-hook)
    +      (cl-letf (((symbol-function 'write-region) (lambda (start end filename &rest _ignore)
    +                                                   (setq file filename)))
    +                ((symbol-function 'delete-file) #'ignore))
    +        (org-babel-tangle '(4)))
    +      (when file
    +        (setq file (expand-file-name file))
    +        (if (file-readable-p file)
    +            (find-file file)
    +          (error "Cannot open tangle file %S" file)))))
     
    @@ -3377,11 +3377,11 @@ Org-Tangle and Org-Babel Jump to Tangle File Map Functions

    -
    (after! org
    -  (map! :map org-mode-map
    -        (:prefix (",b" . "Tangle")
    -        :n  "F" 'tdh-org-babel-jump-to-tangle-file
    -        :n  "T" 'tdh-org-babel-tangle-subtree)))
    +
      (after! org
    +    (map! :map org-mode-map
    +          (:prefix (",b" . "Tangle")
    +          :n  "F" 'tdh-org-babel-jump-to-tangle-file
    +          :n  "T" 'tdh-org-babel-tangle-subtree)))
     
    @@ -3418,76 +3418,76 @@ Nice Functions:
    -
    (use-package! org-ref
    -  :after org
    -  :init
    -  :config
    -  ;; Folder where the notes files are located (or file if just one Note file)
    -  (setq org-ref-notes-directory "~/Cloud/brain")
    -  (setq org-ref-bibliography-notes "~/Cloud/brain")
    +
      (use-package! org-ref
    +    :after org
    +    :init
    +    :config
    +    ;; Folder where the notes files are located (or file if just one Note file)
    +    (setq org-ref-notes-directory "~/Cloud/brain")
    +    (setq org-ref-bibliography-notes "~/Cloud/brain")
     
    -  ;; Bibliography File
    -  (setq reftex-default-bibliography  '("~/Cloud/brain/biblio/references.bib"))
    -  (setq org-ref-default-bibliography '("~/Cloud/brain/biblio/references.bib"))
    +    ;; Bibliography File
    +    (setq reftex-default-bibliography  '("~/Cloud/brain/biblio/references.bib"))
    +    (setq org-ref-default-bibliography '("~/Cloud/brain/biblio/references.bib"))
     
    -  ;; Folder where all the pdf are located
    -  (setq org-ref-pdf-directory "~/Cloud/pdfs")
    +    ;; Folder where all the pdf are located
    +    (setq org-ref-pdf-directory "~/Cloud/pdfs")
     
    -  (setq org-ref-bibliography-entry-format
    -        '(("article" . "%a, %t, %j, v(%n), %p (%y).")
    -          ("book" . "%a, %t, %u (%y).")
    -          ("techreport" . "%a, %t, %i, %u (%y).")
    -          ("phdthesis" . "%a, %t (%y).")
    -          ("proceedings" . "%e, %t in %S, %u (%y).")
    -          ("inproceedings" . "%a, %t, %p, in %b, edited by %e, %u (%y)")))
    +    (setq org-ref-bibliography-entry-format
    +          '(("article" . "%a, %t, %j, v(%n), %p (%y).")
    +            ("book" . "%a, %t, %u (%y).")
    +            ("techreport" . "%a, %t, %i, %u (%y).")
    +            ("phdthesis" . "%a, %t (%y).")
    +            ("proceedings" . "%e, %t in %S, %u (%y).")
    +            ("inproceedings" . "%a, %t, %p, in %b, edited by %e, %u (%y)")))
     
    -  ;; Tell org-ref to let helm-bibtex find notes for it
    -  (setq org-ref-notes-function
    -        (lambda (thekey)
    -          (let ((bibtex-completion-bibliography (org-ref-find-bibliography)))
    -            (bibtex-completion-edit-notes
    -             (list (car (org-ref-get-bibtex-key-and-file thekey)))))))
    +    ;; Tell org-ref to let helm-bibtex find notes for it
    +    (setq org-ref-notes-function
    +          (lambda (thekey)
    +            (let ((bibtex-completion-bibliography (org-ref-find-bibliography)))
    +              (bibtex-completion-edit-notes
    +               (list (car (org-ref-get-bibtex-key-and-file thekey)))))))
     
    -  ;; Problem with speed: don't display broken links
    -  (setq org-ref-show-broken-links t)
    -  ;; Display information on the citation
    -  (setq org-ref-show-citation-on-enter t)
    +    ;; Problem with speed: don't display broken links
    +    (setq org-ref-show-broken-links t)
    +    ;; Display information on the citation
    +    (setq org-ref-show-citation-on-enter t)
     
    -  (add-to-list 'org-ref-helm-user-candidates
    -               '("Open pdf in Zathura" . (lambda () (call-process "zathura" nil 0 nil  (concat
    -                                                                                        (file-name-as-directory org-ref-pdf-directory)
    -                                                                                        (car (org-ref-get-bibtex-key-and-file))
    -                                                                                        ".pdf"))))
    -               t)
    +    (add-to-list 'org-ref-helm-user-candidates
    +                 '("Open pdf in Zathura" . (lambda () (call-process "zathura" nil 0 nil  (concat
    +                                                                                          (file-name-as-directory org-ref-pdf-directory)
    +                                                                                          (car (org-ref-get-bibtex-key-and-file))
    +                                                                                          ".pdf"))))
    +                 t)
     
    -  (add-to-list 'org-ref-helm-user-candidates
    -               '("Drag and Drop" . (lambda () (call-process "/bin/bash" nil 0 nil "-c" (concat
    -                                                                                        "dragon-drag-and-drop "
    -                                                                                        (file-name-as-directory org-ref-pdf-directory)
    -                                                                                        (car (org-ref-get-bibtex-key-and-file))
    -                                                                                        ".pdf"))))
    -               t)
    +    (add-to-list 'org-ref-helm-user-candidates
    +                 '("Drag and Drop" . (lambda () (call-process "/bin/bash" nil 0 nil "-c" (concat
    +                                                                                          "dragon-drag-and-drop "
    +                                                                                          (file-name-as-directory org-ref-pdf-directory)
    +                                                                                          (car (org-ref-get-bibtex-key-and-file))
    +                                                                                          ".pdf"))))
    +                 t)
     
    -  ;; Let Mathjax deals with equation reference
    -  (defun org-ref-eqref-export (keyword desc format)
    -    (cond
    -     ((eq format 'latex) (format "\\eqref{%s}" keyword))
    -     ((eq format 'html) (format "\\eqref{%s}" keyword))
    -     ((eq format 'md) (format "\\eqref{%s}" keyword))))
    -  )
    +    ;; Let Mathjax deals with equation reference
    +    (defun org-ref-eqref-export (keyword desc format)
    +      (cond
    +       ((eq format 'latex) (format "\\eqref{%s}" keyword))
    +       ((eq format 'html) (format "\\eqref{%s}" keyword))
    +       ((eq format 'md) (format "\\eqref{%s}" keyword))))
    +    )
     
    -
    (defun tdh-org-ref-open-pdf-at-point ()
    -  "Open the pdf in external program for bibtex key under point if it exists."
    -  (interactive)
    -  (let* ((results (org-ref-get-bibtex-key-and-file))
    -         (key (car results))
    -         (pdf-file (funcall org-ref-get-pdf-filename-function key)))
    -    (if (file-exists-p pdf-file)
    -        (call-process "zathura" nil 0 nil pdf-file)
    -      (message "no pdf found for %s" key))))
    +
      (defun tdh-org-ref-open-pdf-at-point ()
    +    "Open the pdf in external program for bibtex key under point if it exists."
    +    (interactive)
    +    (let* ((results (org-ref-get-bibtex-key-and-file))
    +           (key (car results))
    +           (pdf-file (funcall org-ref-get-pdf-filename-function key)))
    +      (if (file-exists-p pdf-file)
    +          (call-process "zathura" nil 0 nil pdf-file)
    +        (message "no pdf found for %s" key))))
     
    @@ -3497,37 +3497,37 @@ Nice Functions:

    Org Noter (link)

    -
    (use-package! org-noter
    -  :defer t
    -  :after (:any org pdf-view)
    -  :config
    -  (setq org-noter-always-create-frame nil)
    +
      (use-package! org-noter
    +    :defer t
    +    :after (:any org pdf-view)
    +    :config
    +    (setq org-noter-always-create-frame nil)
     
    -  (setq org-noter-kill-frame-at-session-end nil)
    +    (setq org-noter-kill-frame-at-session-end nil)
     
    -  ;; Fraction of the frame that the document window will occupy when split
    -  (setq org-noter-doc-split-fraction '(0.6 . 0.6))
    +    ;; Fraction of the frame that the document window will occupy when split
    +    (setq org-noter-doc-split-fraction '(0.6 . 0.6))
     
    -  ;; Save the last visited location automatically; when starting a new session, go to that location
    -  (setq org-noter-auto-save-last-location nil)
    +    ;; Save the last visited location automatically; when starting a new session, go to that location
    +    (setq org-noter-auto-save-last-location nil)
     
    -  ;; Add an empty line between each note's heading and content
    -  (setq org-noter-separate-notes-from-heading t)
    +    ;; Add an empty line between each note's heading and content
    +    (setq org-noter-separate-notes-from-heading t)
     
    -  ;; List of paths to check (non recursively) when searching for a notes file
    -  (setq org-noter-notes-search-path "~/Cloud/brain")
    +    ;; List of paths to check (non recursively) when searching for a notes file
    +    (setq org-noter-notes-search-path "~/Cloud/brain")
     
    -  (defun org-noter-init-pdf-view ()
    -    (pdf-view-fit-page-to-window)
    -    (pdf-view-auto-slice-minor-mode)
    -    (run-at-time "0.5 sec" nil #'org-noter))
    -  (add-hook 'pdf-view-mode-hook 'org-noter-init-pdf-view)
    +    (defun org-noter-init-pdf-view ()
    +      (pdf-view-fit-page-to-window)
    +      (pdf-view-auto-slice-minor-mode)
    +      (run-at-time "0.5 sec" nil #'org-noter))
    +    (add-hook 'pdf-view-mode-hook 'org-noter-init-pdf-view)
     
    -  (map!
    -   :map pdf-view-mode-map
    -   (:desc "Insert Note"
    -     :n "i" #'org-noter-insert-note))
    -  )
    +    (map!
    +     :map pdf-view-mode-map
    +     (:desc "Insert Note"
    +       :n "i" #'org-noter-insert-note))
    +    )
     
    @@ -3537,40 +3537,40 @@ Nice Functions:

    Org Roam (link)

    -
    (use-package! org-roam
    -  :custom-face
    -  (org-roam-link ((t (:inherit org-link :foreground "#cc241d"))))
    -  :config
    -  (setq org-roam-directory "~/Cloud/brain/")
    -  (setq org-roam-completion-system 'helm)
    -  (setq org-roam-tag-sources '(prop last-directory))
    -  (setq org-roam-capture-templates
    -        `(("d" "default" plain (function org-roam--capture-get-point)
    -           "%?"
    -           :file-name "${slug}"
    -           :head ,(concat "#+TITLE: ${title}\n"
    -                          "#+SETUPFILE: ./setup/org-setup-file.org\n"
    -                          "#+HUGO_SECTION: zettels\n"
    -                          "\n"
    -                          "- Tags ::\n"
    -                          "\n"
    -                          "* Bibliography                                                        :ignore:\n"
    -                          "bibliography:./biblio/references.bib"
    -                          )
    -           :unnarrowed t)))
    -  (setq org-roam-capture-ref-templates
    -        `(("r" "ref" plain (function org-roam--capture-get-point)
    -           "%?"
    -           :file-name "${slug}"
    -           :head ,(concat "#+TITLE: ${title}\n"
    -                          "#+SETUPFILE: ./setup/org-setup-file.org\n"
    -                          "#+HUGO_SECTION: websites\n"
    -                          "#+ROAM_KEY: ${ref}\n"
    -                          "\n"
    -                          "- Tags ::\n"
    -                          )
    -           :unnarrowed t)))
    -  )
    +
      (use-package! org-roam
    +    :custom-face
    +    (org-roam-link ((t (:inherit org-link :foreground "#cc241d"))))
    +    :config
    +    (setq org-roam-directory "~/Cloud/brain/")
    +    (setq org-roam-completion-system 'helm)
    +    (setq org-roam-tag-sources '(prop last-directory))
    +    (setq org-roam-capture-templates
    +          `(("d" "default" plain (function org-roam--capture-get-point)
    +             "%?"
    +             :file-name "${slug}"
    +             :head ,(concat "#+TITLE: ${title}\n"
    +                            "#+SETUPFILE: ./setup/org-setup-file.org\n"
    +                            "#+HUGO_SECTION: zettels\n"
    +                            "\n"
    +                            "- Tags ::\n"
    +                            "\n"
    +                            "* Bibliography                                                        :ignore:\n"
    +                            "bibliography:./biblio/references.bib"
    +                            )
    +             :unnarrowed t)))
    +    (setq org-roam-capture-ref-templates
    +          `(("r" "ref" plain (function org-roam--capture-get-point)
    +             "%?"
    +             :file-name "${slug}"
    +             :head ,(concat "#+TITLE: ${title}\n"
    +                            "#+SETUPFILE: ./setup/org-setup-file.org\n"
    +                            "#+HUGO_SECTION: websites\n"
    +                            "#+ROAM_KEY: ${ref}\n"
    +                            "\n"
    +                            "- Tags ::\n"
    +                            )
    +             :unnarrowed t)))
    +    )
     
    @@ -3578,31 +3578,31 @@ Nice Functions: Automatic export of backlinks

    -
    (after! (org org-roam)
    -  (defun tdh-org-roam--backlinks-list (file)
    -    (when (org-roam--org-roam-file-p file)
    -      (mapcar #'car (org-roam-db-query [:select :distinct [from]
    -                                        :from links
    -                                        :where (= to $s1)
    -                                        :and from :not :like $s2] file "%private%"))))
    -  (defun tdh-org-export-preprocessor (_backend)
    -    (when-let ((links (tdh-org-roam--backlinks-list (buffer-file-name))))
    -      (insert "\nBacklinks:\n")
    -      (dolist (link links)
    -        (insert (format "- [[file:%s][%s]]\n"
    -                        (file-relative-name link org-roam-directory)
    -                        (org-roam--get-title-or-slug link))))))
    -  (add-hook 'org-export-before-processing-hook #'tdh-org-export-preprocessor)
    +
      (after! (org org-roam)
    +    (defun tdh-org-roam--backlinks-list (file)
    +      (when (org-roam--org-roam-file-p file)
    +        (mapcar #'car (org-roam-db-query [:select :distinct [from]
    +                                          :from links
    +                                          :where (= to $s1)
    +                                          :and from :not :like $s2] file "%private%"))))
    +    (defun tdh-org-export-preprocessor (_backend)
    +      (when-let ((links (tdh-org-roam--backlinks-list (buffer-file-name))))
    +        (insert "\nBacklinks:\n")
    +        (dolist (link links)
    +          (insert (format "- [[file:%s][%s]]\n"
    +                          (file-relative-name link org-roam-directory)
    +                          (org-roam--get-title-or-slug link))))))
    +    (add-hook 'org-export-before-processing-hook #'tdh-org-export-preprocessor)
     
     
    -  (defun tdh-org-roam-export-all ()
    -    "Re-exports all Org-roam files to Hugo markdown."
    -    (interactive)
    -    (dolist (f (org-roam--list-all-files))
    -      (with-current-buffer (find-file f)
    -        (when (s-contains? "SETUPFILE" (buffer-string))
    -          (org-hugo-export-wim-to-md)))))
    -  )
    +    (defun tdh-org-roam-export-all ()
    +      "Re-exports all Org-roam files to Hugo markdown."
    +      (interactive)
    +      (dolist (f (org-roam--list-all-files))
    +        (with-current-buffer (find-file f)
    +          (when (s-contains? "SETUPFILE" (buffer-string))
    +            (org-hugo-export-wim-to-md)))))
    +    )
     
    @@ -3610,43 +3610,43 @@ Automatic export of backlinks Create Org-Roam file from heading (link)

    -
    (defun tdh/make-roam-filepath (title)
    -  "Make filename from note TITLE."
    -  (concat
    -   org-roam-directory
    -   (org-roam--title-to-slug title)
    -   ".org"))
    +
      (defun tdh/make-roam-filepath (title)
    +    "Make filename from note TITLE."
    +    (concat
    +     org-roam-directory
    +     (org-roam--title-to-slug title)
    +     ".org"))
     
    -(defun tdh/insert-org-roam-file (file-path title text)
    -  "Insert org roam file in FILE-PATH with TITLE, LINKS, SOURCES, TEXT, QUOTE."
    -  (with-temp-file file-path
    -    (insert
    -     "#+TITLE: " title "\n"
    -     "#+SETUPFILE: ./setup/org-setup-file.org\n"
    -     "#+HUGO_SECTION: zettels\n"
    -     "\n"
    -     "- Tags ::\n"
    -     "\n"
    -     text
    -     "\n"
    -     "\n"
    -     "* Bibliography                                                        :ignore:\n"
    -     "bibliography:./biblio/references.bib"
    -     "\n"
    -     )))
    +  (defun tdh/insert-org-roam-file (file-path title text)
    +    "Insert org roam file in FILE-PATH with TITLE, LINKS, SOURCES, TEXT, QUOTE."
    +    (with-temp-file file-path
    +      (insert
    +       "#+TITLE: " title "\n"
    +       "#+SETUPFILE: ./setup/org-setup-file.org\n"
    +       "#+HUGO_SECTION: zettels\n"
    +       "\n"
    +       "- Tags ::\n"
    +       "\n"
    +       text
    +       "\n"
    +       "\n"
    +       "* Bibliography                                                        :ignore:\n"
    +       "bibliography:./biblio/references.bib"
    +       "\n"
    +       )))
     
     
    -(defun tdh/convert-task-to-org-note ()
    -  "Convert a task in a `org-roam' note."
    -  (interactive)
    -  (let* ((heading (org-get-heading t t t t))
    -         (body (org-get-entry))
    -         (filepath (tdh/make-roam-filepath heading)))
    -    (tdh/insert-org-roam-file
    -     filepath
    -     heading
    -     body)
    -    (find-file filepath)))
    +  (defun tdh/convert-task-to-org-note ()
    +    "Convert a task in a `org-roam' note."
    +    (interactive)
    +    (let* ((heading (org-get-heading t t t t))
    +           (body (org-get-entry))
    +           (filepath (tdh/make-roam-filepath heading)))
    +      (tdh/insert-org-roam-file
    +       filepath
    +       heading
    +       body)
    +      (find-file filepath)))
     
    @@ -3656,95 +3656,95 @@ Create Org-Roam file from heading (Helm-Bibtex (link)
    -
    (use-package! helm-bibtex
    -  :after-call helm-bibtex
    -  :init
    -  :config
    -  ;; Bibliography file
    -  (setq bibtex-completion-bibliography "~/Cloud/brain/biblio/references.bib")
    +
      (use-package! helm-bibtex
    +    :after-call helm-bibtex
    +    :init
    +    :config
    +    ;; Bibliography file
    +    (setq bibtex-completion-bibliography '("~/Cloud/brain/biblio/references.bib"
    +      "~/Cloud/acoustic/resources/acoustics.bib"))
     
    -  ;; Directory with all the pdfs
    -  (setq bibtex-completion-library-path "~/Cloud/pdfs/")
    +    ;; Directory with all the pdfs
    +    (setq bibtex-completion-library-path '("~/Cloud/pdfs/"
    +                                           "~/Cloud/acoustic/resources/pdfs/"))
     
    -  ;; Directory with notes files
    -  (setq bibtex-completion-notes-path "~/Cloud/brain/")
    +    ;; Directory with notes files
    +    (setq bibtex-completion-notes-path "~/Cloud/brain/")
    +    (setq bibtex-completion-notes-extension ".org")
    +    (setq bibtex-completion-pdf-extension '(".pdf" ".djvu"))
     
    -  (setq bibtex-completion-notes-extension ".org")
    +    (setq bibtex-completion-additional-search-fields '(keywords))
     
    -  (setq bibtex-completion-pdf-extension '(".pdf" ".djvu"))
    +    ;; Use "keywords" field when looking for bib entries
    +    (setq helm-bibtex-additional-search-fields '(keywords))
     
    -  (setq bibtex-completion-additional-search-fields '(keywords))
    +    (setq helm-bibtex-full-frame nil)
     
    -  ;; Use "keywords" field when looking for bib entries
    -  (setq helm-bibtex-additional-search-fields '(keywords))
    +    ;; Display of bibtex entries with helm
    +    (setq bibtex-completion-display-formats
    +          '((t . "${author:36} ${title:*} ${year:4} ${=type=:7} ${=has-note=:1}")))
     
    -  (setq helm-bibtex-full-frame nil)
    +    ;; Special symbols for notes and pdf
    +    (setq bibtex-completion-pdf-symbol "⌘")
    +    (setq bibtex-completion-notes-symbol "✎")
     
    -  ;; Display of bibtex entries with helm
    -  (setq bibtex-completion-display-formats
    -        '((t . "${author:36} ${title:*} ${year:4} ${=type=:7} ${=has-note=:1}")))
    +    ;; Template used when creating new Note file
    +    (setq bibtex-completion-notes-template-multiple-files (concat "#+TITLE: ${title}\n"
    +                                                                  "#+SETUPFILE: ./setup/org-setup-file.org\n"
    +                                                                  "#+HUGO_SECTION: ${=type=}\n"
    +                                                                  "#+ROAM_KEY: ${=key=}\n"
    +                                                                  "\n"
    +                                                                  "- Tags ::\n"
    +                                                                  "- Reference :: cite:${=key=}\n"
    +                                                                  "- Author(s) :: ${author}\n"
    +                                                                  "- Year :: ${year}\n"
    +                                                                  "\n"
    +                                                                  "* ${author-abbrev} (${year}): ${title} :${=type=}:ignore:\n"
    +                                                                  ":PROPERTIES:\n"
    +                                                                  ":NOTER_DOCUMENT: ../pdfs/${=key=}.pdf\n"
    +                                                                  ":END:\n"
    +                                                                  "\n"
    +                                                                  "* Bibliography                                                        :ignore:\n"
    +                                                                  "bibliography:./biblio/references.bib"
    +                                                                  ))
     
    -  ;; Special symbols for notes and pdf
    -  (setq bibtex-completion-pdf-symbol "⌘")
    -  (setq bibtex-completion-notes-symbol "✎")
    +    ;; Make "Edit notes" the default action
    +    (helm-delete-action-from-source "Edit notes" helm-source-bibtex)
    +    (helm-add-action-to-source "Edit notes" 'helm-bibtex-edit-notes helm-source-bibtex 0)
     
    -  ;; Template used when creating new Note file
    -  (setq bibtex-completion-notes-template-multiple-files (concat "#+TITLE: ${title}\n"
    -                                                                "#+SETUPFILE: ./setup/org-setup-file.org\n"
    -                                                                "#+HUGO_SECTION: ${=type=}\n"
    -                                                                "#+ROAM_KEY: ${=key=}\n"
    -                                                                "\n"
    -                                                                "- Tags ::\n"
    -                                                                "- Reference :: cite:${=key=}\n"
    -                                                                "- Author(s) :: ${author}\n"
    -                                                                "- Year :: ${year}\n"
    -                                                                "\n"
    -                                                                "* ${author-abbrev} (${year}): ${title} :${=type=}:ignore:\n"
    -                                                                ":PROPERTIES:\n"
    -                                                                ":NOTER_DOCUMENT: ../pdfs/${=key=}.pdf\n"
    -                                                                ":END:\n"
    -                                                                "\n"
    -                                                                "* Bibliography                                                        :ignore:\n"
    -                                                                "bibliography:./biblio/references.bib"
    -                                                                ))
    +    (helm-delete-action-from-source "Open PDF Externally" helm-source-bibtex)
    +    (helm-add-action-to-source "Open PDF Externally" 'tdh-open-pdf-externally helm-source-bibtex 1)
     
    -  ;; Make "Edit notes" the default action
    -  (helm-delete-action-from-source "Edit notes" helm-source-bibtex)
    -  (helm-add-action-to-source "Edit notes" 'helm-bibtex-edit-notes helm-source-bibtex 0)
    +    (helm-add-action-to-source "Insert Link to Note" 'tdh-insert-link-to-note helm-source-bibtex 2)
     
    -  (helm-delete-action-from-source "Open PDF Externally" helm-source-bibtex)
    -  (helm-add-action-to-source "Open PDF Externally" 'tdh-open-pdf-externally helm-source-bibtex 1)
    -
    -  (helm-add-action-to-source "Insert Link to Note" 'tdh-insert-link-to-note helm-source-bibtex 2)
    -
    -  (helm-add-action-to-source "Insert E-Reader Link" 'tdh-insert-link-to-pdf-entry helm-source-bibtex 3)
    -  )
    +    (helm-add-action-to-source "Insert E-Reader Link" 'tdh-insert-link-to-pdf-entry helm-source-bibtex 3)
    +    )
     
    -
    (defun tdh-insert-link-to-pdf-entry (key)
    -  "Insert a link to a pdf associated with the bibtex entry."
    -  (let*
    -      ((entry (bibtex-completion-get-entry key))
    -       (title (bibtex-completion-get-value "title" entry)))
    -    (insert (concat "[[file:Download/" key ".pdf][" title "]] (cite:" key ")"))
    -    )
    -  )
    +
      (defun tdh-insert-link-to-pdf-entry (key)
    +    "Insert a link to a pdf associated with the bibtex entry."
    +    (let*
    +        ((entry (bibtex-completion-get-entry key))
    +         (title (bibtex-completion-get-value "title" entry)))
    +      (insert (concat "[[file:Download/" key ".pdf][" title "]] (cite:" key ")"))
    +      )
    +    )
     
    -
    (defun tdh-insert-link-to-note (key)
    -  "Insert a link to a note associated with the bibtex entry."
    -  (if (and bibtex-completion-notes-path
    -           (f-directory? bibtex-completion-notes-path))
    -      (let* ((path (f-join bibtex-completion-notes-path
    -                           (s-concat key bibtex-completion-notes-extension))))
    -        (if (file-exists-p path)
    -            (insert (concat "[[file:" (file-relative-name path) "][Notes]]"))
    -          (message "No note file associated"))
    -        )))
    +
      (defun tdh-insert-link-to-note (key)
    +    "Insert a link to a note associated with the bibtex entry."
    +    (if (and bibtex-completion-notes-path
    +             (f-directory? bibtex-completion-notes-path))
    +        (let* ((path (f-join bibtex-completion-notes-path
    +                             (s-concat key bibtex-completion-notes-extension))))
    +          (if (file-exists-p path)
    +              (insert (concat "[[file:" (file-relative-name path) "][Notes]]"))
    +            (message "No note file associated"))
    +          )))
     
    @@ -3752,8 +3752,8 @@ Create Org-Roam file from heading ( -
    (defun tdh-open-pdf-externally (key)
    -  (call-process "zathura" nil 0 nil (nth 0 (-cons-to-list (bibtex-completion-find-pdf key)))))
    +
      (defun tdh-open-pdf-externally (key)
    +    (call-process "zathura" nil 0 nil (nth 0 (-cons-to-list (bibtex-completion-find-pdf key)))))
     
    @@ -3761,10 +3761,10 @@ Open pdf externally Special Commands

    -
    (defun tdh-helm-bibtex-favorites (&optional arg)
    -  "Search Favorite BibTeX entries"
    -  (interactive "P")
    -  (helm-bibtex arg nil "favorite "))
    +
      (defun tdh-helm-bibtex-favorites (&optional arg)
    +    "Search Favorite BibTeX entries"
    +    (interactive "P")
    +    (helm-bibtex arg nil "favorite "))
     
    @@ -3772,24 +3772,24 @@ Special Commands List all element of the bibliography without pdf associated

    -
    (defun tdh-list-bib-without-pdf-associated ()
    -  (interactive)
    -  (bibtex-completion-init)
    -  (setq candidates (bibtex-completion-candidates))
    +
      (defun tdh-list-bib-without-pdf-associated ()
    +    (interactive)
    +    (bibtex-completion-init)
    +    (setq candidates (bibtex-completion-candidates))
     
    -  (defun canditate-is-pdf-present (candidate)
    -    (bibtex-completion-find-pdf-in-library (cdr (assoc "=key=" candidate)))
    -    )
    +    (defun canditate-is-pdf-present (candidate)
    +      (bibtex-completion-find-pdf-in-library (cdr (assoc "=key=" candidate)))
    +      )
     
    -  (setq candidates-without-pdf (remove-if #'canditate-is-pdf-present candidates))
    +    (setq candidates-without-pdf (remove-if #'canditate-is-pdf-present candidates))
     
    -  (setq candidate-without-pdf-names (mapcar
    -                                     (lambda (x) (cdr (assoc "title" x)))
    -                                     candidates-without-pdf))
    +    (setq candidate-without-pdf-names (mapcar
    +                                       (lambda (x) (cdr (assoc "title" x)))
    +                                       candidates-without-pdf))
     
    -  (with-output-to-temp-buffer "*bib-without-pdf*" (princ (string-join candidate-without-pdf-names "\n")))
    -  (switch-to-buffer-other-window "*bib-without-pdf*")
    -  )
    +    (with-output-to-temp-buffer "*bib-without-pdf*" (princ (string-join candidate-without-pdf-names "\n")))
    +    (switch-to-buffer-other-window "*bib-without-pdf*")
    +    )
     
    @@ -3799,9 +3799,9 @@ List all element of the bibliography without pdf associated

    Deft

    -
    (use-package! deft
    -  :custom
    -  (deft-directory "~/Cloud/brain/"))
    +
      (use-package! deft
    +    :custom
    +    (deft-directory "~/Cloud/brain/"))
     
    @@ -3820,45 +3820,45 @@ Provides nice functions such as:
    -
    (use-package! org-roam-bibtex
    -  :hook (org-roam-mode . org-roam-bibtex-mode)
    -  :config
    -  (setq orb-preformat-keywords `("=key=" "title" "author" "year" "author-abbrev" "=type="))
    +
      (use-package! org-roam-bibtex
    +    :hook (org-roam-mode . org-roam-bibtex-mode)
    +    :config
    +    (setq orb-preformat-keywords `("=key=" "title" "author" "year" "author-abbrev" "=type="))
     
    -  (setq orb-templates
    -        `(("r" "ref" plain (function org-roam-capture--get-point) ""
    -           :file-name "${=key=}"
    -           :head ,(concat "#+TITLE: ${title}\n"
    -                          "#+SETUPFILE: ./setup/org-setup-file.org\n"
    -                          "#+HUGO_SECTION: ${=type=}\n"
    -                          "#+ROAM_KEY: ${ref}\n"
    -                          "\n"
    -                          "- Tags ::\n"
    -                          "- Reference :: ${ref}\n"
    -                          "- Author(s) :: ${author}\n"
    -                          "- Year :: ${year}\n"
    -                          "\n"
    -                          "* ${author-abbrev} (${year}): ${title} :${=type=}:ignore:\n"
    -                          ":PROPERTIES:\n"
    -                          ":NOTER_DOCUMENT: ../pdfs/${=key=}.pdf\n"
    -                          ":END:\n"
    -                          "\n"
    -                          "* Bibliography                                                        :ignore:\n"
    -                          "bibliography:./biblio/references.bib"
    -                          )
    -           :unnarrowed t)))
    +    (setq orb-templates
    +          `(("r" "ref" plain (function org-roam-capture--get-point) ""
    +             :file-name "${=key=}"
    +             :head ,(concat "#+TITLE: ${title}\n"
    +                            "#+SETUPFILE: ./setup/org-setup-file.org\n"
    +                            "#+HUGO_SECTION: ${=type=}\n"
    +                            "#+ROAM_KEY: ${ref}\n"
    +                            "\n"
    +                            "- Tags ::\n"
    +                            "- Reference :: ${ref}\n"
    +                            "- Author(s) :: ${author}\n"
    +                            "- Year :: ${year}\n"
    +                            "\n"
    +                            "* ${author-abbrev} (${year}): ${title} :${=type=}:ignore:\n"
    +                            ":PROPERTIES:\n"
    +                            ":NOTER_DOCUMENT: ../pdfs/${=key=}.pdf\n"
    +                            ":END:\n"
    +                            "\n"
    +                            "* Bibliography                                                        :ignore:\n"
    +                            "bibliography:./biblio/references.bib"
    +                            )
    +             :unnarrowed t)))
     
    -  (setq orb-note-actions-user '(("Open with Zathura" . tdh-open-bib-with-zathura)))
    -  )
    +    (setq orb-note-actions-user '(("Open with Zathura" . tdh-open-bib-with-zathura)))
    +    )
     
    -
    (defun tdh-open-bib-with-zathura (key)
    -  "Open the pdf corresponding to the reference KEY with Zathura"
    -  (if (listp key)
    -      (setq key (car key)))
    -  (call-process "zathura" nil 0 nil (org-ref-get-pdf-filename key)))
    +
      (defun tdh-open-bib-with-zathura (key)
    +    "Open the pdf corresponding to the reference KEY with Zathura"
    +    (if (listp key)
    +        (setq key (car key)))
    +    (call-process "zathura" nil 0 nil (org-ref-get-pdf-filename key)))
     
    @@ -3868,11 +3868,11 @@ Provides nice functions such as:

    Citeproc-org (link)

    -
    (use-package! citeproc-org
    -  :after org
    -  :config
    -  (citeproc-org-setup)
    -  (setq citeproc-org-html-backends '(html)))
    +
      (use-package! citeproc-org
    +    :after org
    +    :config
    +    (citeproc-org-setup)
    +    (setq citeproc-org-html-backends '(html)))
     
    @@ -3888,12 +3888,12 @@ Provides nice functions such as: -
    -

    Basic Config

    -
    +
    +

    Basic Config

    +
    -
    (after! auctex
    -  (setq +latex-viewers '(zathura pdf-tools)))
    +
      (after! auctex
    +    (setq +latex-viewers '(zathura pdf-tools)))
     
    @@ -3903,9 +3903,9 @@ Provides nice functions such as:

    Bibtex

    -
    (use-package! bibtex
    -  :config
    -  (bibtex-set-dialect 'BibTeX))
    +
      (use-package! bibtex
    +    :config
    +    (bibtex-set-dialect 'BibTeX))
     
    @@ -3924,10 +3924,10 @@ Provides nice functions such as:

    Setup Matlab Mode

    -
    (setq matlab-shell-command "/home/thomas/.local/bin/matlab")
    -(setq matlab-shell-command-switches (list "-softwareopengl -nodesktop -nosplash"))
    -(setq matlab-indent-function t)
    -(setq mlint-programs '("mlint" "/home/thomas/.local/bin/mlint"))
    +
      (setq matlab-shell-command "/home/thomas/.local/bin/matlab")
    +  (setq matlab-shell-command-switches (list "-softwareopengl -nodesktop -nosplash"))
    +  (setq matlab-indent-function t)
    +  (setq mlint-programs '("mlint" "/home/thomas/.local/bin/mlint"))
     
    @@ -3937,19 +3937,19 @@ Provides nice functions such as:

    Setup Flycheck to work with mlint

    -
    (defvar mlint-executable "/home/thomas/.local/bin/mlint")
    +
      (defvar mlint-executable "/home/thomas/.local/bin/mlint")
     
    -(flycheck-define-command-checker 'matlab-mlint
    -  "A Matlab checker based on mlint."
    -  :command `(,mlint-executable source)
    -  :error-patterns
    -  '((warning line-start "L " line " (C " (1+ digit)  "): " (message) line-end))
    -  :modes '(matlab-mode))
    +  (flycheck-define-command-checker 'matlab-mlint
    +    "A Matlab checker based on mlint."
    +    :command `(,mlint-executable source)
    +    :error-patterns
    +    '((warning line-start "L " line " (C " (1+ digit)  "): " (message) line-end))
    +    :modes '(matlab-mode))
     
    -(add-to-list 'flycheck-checkers 'matlab-mlint)
    +  (add-to-list 'flycheck-checkers 'matlab-mlint)
     
    -;; Automatic startup of flycheck for matlab
    -(add-hook 'matlab-mode-hook 'flycheck-mode)
    +  ;; Automatic startup of flycheck for matlab
    +  (add-hook 'matlab-mode-hook 'flycheck-mode)
     
    @@ -3959,8 +3959,8 @@ Provides nice functions such as:

    Completion in the Matlab Shell

    -
    (map! :map matlab-shell-mode-map
    -      :i "<tab>" 'matlab-shell-tab)
    +
      (map! :map matlab-shell-mode-map
    +        :i "<tab>" 'matlab-shell-tab)
     
    @@ -3970,18 +3970,18 @@ Provides nice functions such as:

    Beautify code

    -
    (defun tdh-matlab-beautify-buffer ()
    -  "Beautify Current Matlab Buffer"
    -  (interactive)
    -  ;; First verifies is the current file is a Matlab file
    -  (if (string= (file-name-extension (buffer-file-name)) "m")
    -      (progn
    -        (save-buffer)
    -        (matlab-shell-run-command (concat "MBeautify.formatFileNoEditor(\"" (buffer-file-name) "\", \"" (buffer-file-name) "\")"))
    -        (revert-buffer :ignore-auto :noconfirm))
    -    (message "Current buffer is not a matlab file")
    -    )
    -  )
    +
      (defun tdh-matlab-beautify-buffer ()
    +    "Beautify Current Matlab Buffer"
    +    (interactive)
    +    ;; First verifies is the current file is a Matlab file
    +    (if (string= (file-name-extension (buffer-file-name)) "m")
    +        (progn
    +          (save-buffer)
    +          (matlab-shell-run-command (concat "MBeautify.formatFileNoEditor(\"" (buffer-file-name) "\", \"" (buffer-file-name) "\")"))
    +          (revert-buffer :ignore-auto :noconfirm))
    +      (message "Current buffer is not a matlab file")
    +      )
    +    )
     
    @@ -3991,51 +3991,51 @@ Provides nice functions such as:

    Key Bindings

    -
    (defun tdh-matlab-add-breakpoint ()
    -  (interactive)
    -  (matlab-shell-run-command (concat "dbstop in " (buffer-name) " at " (number-to-string (line-number-at-pos nil)))))
    +
      (defun tdh-matlab-add-breakpoint ()
    +    (interactive)
    +    (matlab-shell-run-command (concat "dbstop in " (buffer-name) " at " (number-to-string (line-number-at-pos nil)))))
     
    -(defun tdh-matlab-remove-breakpoint ()
    -  (interactive)
    -  (matlab-shell-run-command (concat "dbclear in " (buffer-name) " at " (number-to-string (line-number-at-pos nil)))))
    +  (defun tdh-matlab-remove-breakpoint ()
    +    (interactive)
    +    (matlab-shell-run-command (concat "dbclear in " (buffer-name) " at " (number-to-string (line-number-at-pos nil)))))
     
    -(defun tdh-matlab-list-breakpoints ()
    -  (interactive)
    -  (matlab-shell-run-command (concat "dbstatus " (buffer-name))))
    +  (defun tdh-matlab-list-breakpoints ()
    +    (interactive)
    +    (matlab-shell-run-command (concat "dbstatus " (buffer-name))))
     
    -(defun tdh-matlab-clear-breakpoints ()
    -  (interactive)
    -  (matlab-shell-run-command (concat "dbclear in " (buffer-name))))
    +  (defun tdh-matlab-clear-breakpoints ()
    +    (interactive)
    +    (matlab-shell-run-command (concat "dbclear in " (buffer-name))))
     
    -(defun tdh-matlab-no-debug-on-error ()
    -  (interactive)
    -  (matlab-shell-run-command (concat "dbclear if error")))
    +  (defun tdh-matlab-no-debug-on-error ()
    +    (interactive)
    +    (matlab-shell-run-command (concat "dbclear if error")))
     
    -(defun tdh-matlab-debug-on-error ()
    -  (interactive)
    -  (matlab-shell-run-command (concat "dbstop if error")))
    +  (defun tdh-matlab-debug-on-error ()
    +    (interactive)
    +    (matlab-shell-run-command (concat "dbstop if error")))
     
    -(defun tdh-matlab-go-to-file-directory ()
    -  (interactive)
    -  (matlab-shell-run-command (concat "cd " (file-name-directory buffer-file-name))))
    +  (defun tdh-matlab-go-to-file-directory ()
    +    (interactive)
    +    (matlab-shell-run-command (concat "cd " (file-name-directory buffer-file-name))))
     
    -
    (map! :map matlab-mode-map
    -      (:prefix ("," . "prefix")
    -       :n "g" 'tdh-matlab-go-to-file-directory
    -       (:prefix ("d" . "Debug")
    -        :n "de" 'tdh-matlab-debug-on-error
    -        :n "dE" 'tdh-matlab-no-debug-on-error
    -        :n "da" 'tdh-matlab-add-breakpoint
    -        :n "dr" 'tdh-matlab-remove-breakpoint
    -        :n "dL" 'tdh-matlab-list-breakpoints
    -        :n "dc" 'tdh-matlab-clear-breakpoints
    -        :n "dl" 'gud-cont
    -        :n "ds" 'gud-step
    -        :n "dn" 'gud-next
    -        :n "dq" 'gud-finish)))
    +
      (map! :map matlab-mode-map
    +        (:prefix ("," . "prefix")
    +         :n "g" 'tdh-matlab-go-to-file-directory
    +         (:prefix ("d" . "Debug")
    +          :n "de" 'tdh-matlab-debug-on-error
    +          :n "dE" 'tdh-matlab-no-debug-on-error
    +          :n "da" 'tdh-matlab-add-breakpoint
    +          :n "dr" 'tdh-matlab-remove-breakpoint
    +          :n "dL" 'tdh-matlab-list-breakpoints
    +          :n "dc" 'tdh-matlab-clear-breakpoints
    +          :n "dl" 'gud-cont
    +          :n "ds" 'gud-step
    +          :n "dn" 'gud-next
    +          :n "dq" 'gud-finish)))
     
    @@ -4129,14 +4129,14 @@ Send math and source code: This is a helper to help determine which account context I am in based on the folder in my maildir the email (eg. ~/.mail/nine27) is located in.

    -
    (defun mu4e-message-maildir-matches (msg rx)
    -  (when rx
    -    (if (listp rx)
    -        ;; If rx is a list, try each one for a match
    -        (or (mu4e-message-maildir-matches msg (car rx))
    -            (mu4e-message-maildir-matches msg (cdr rx)))
    -      ;; Not a list, check rx
    -      (string-match rx (mu4e-message-field msg :maildir)))))
    +
      (defun mu4e-message-maildir-matches (msg rx)
    +    (when rx
    +      (if (listp rx)
    +          ;; If rx is a list, try each one for a match
    +          (or (mu4e-message-maildir-matches msg (car rx))
    +              (mu4e-message-maildir-matches msg (cdr rx)))
    +        ;; Not a list, check rx
    +        (string-match rx (mu4e-message-field msg :maildir)))))
     
    @@ -4144,44 +4144,44 @@ This is a helper to help determine which account context I am in based on the fo Choose account label to feed msmtp -a option based on From header in Message buffer; This function must be added to message-send-mail-hook for on-the-fly change of From address before sending message since message-send-mail-hook is processed right before sending message.

    -
    (defun choose-msmtp-account ()
    -  (if (message-mail-p)
    -      (save-excursion
    -        (let*
    -            ((from (save-restriction
    -                     (message-narrow-to-headers)
    -                     (message-fetch-field "from")))
    -             (account
    -              (cond
    -               ((string-match "dehaeze.thomas@gmail.com" from) "gmail")
    -               ((string-match "thomas.dehaeze@esrf.fr" from) "esrf"))))
    -          (setq message-sendmail-extra-arguments (list '"-a" account))))))
    +
      (defun choose-msmtp-account ()
    +    (if (message-mail-p)
    +        (save-excursion
    +          (let*
    +              ((from (save-restriction
    +                       (message-narrow-to-headers)
    +                       (message-fetch-field "from")))
    +               (account
    +                (cond
    +                 ((string-match "dehaeze.thomas@gmail.com" from) "gmail")
    +                 ((string-match "thomas.dehaeze@esrf.fr" from) "esrf"))))
    +            (setq message-sendmail-extra-arguments (list '"-a" account))))))
     
    -
    -

    Basic Config

    -
    +
    +

    Basic Config

    +
    -
    (use-package! mu4e
    -  :config
    -  (setq mail-user-agent 'mu4e-user-agent
    -        mu4e-mu-binary "/usr/bin/mu"
    -        mu4e-maildir "~/.mail"
    -        mu4e-compose-format-flowed t
    -        mu4e-compose-in-new-frame nil
    -        mu4e-view-show-images t
    -        mu4e-html2text-command "w3m -dump -T text/html"
    -        mu4e-use-fancy-chars t
    -        mu4e-headers-include-related t
    -        mu4e-attachment-dir  "~/Downloads"
    -        message-kill-buffer-on-exit t
    -        mu4e-compose-signature-auto-include t
    -        mu4e-view-show-images t
    -        mu4e-view-show-addresses t)
    -  )
    +
      (use-package! mu4e
    +    :config
    +    (setq mail-user-agent 'mu4e-user-agent
    +          mu4e-mu-binary "/usr/bin/mu"
    +          mu4e-maildir "~/.mail"
    +          mu4e-compose-format-flowed t
    +          mu4e-compose-in-new-frame nil
    +          mu4e-view-show-images t
    +          mu4e-html2text-command "w3m -dump -T text/html"
    +          mu4e-use-fancy-chars t
    +          mu4e-headers-include-related t
    +          mu4e-attachment-dir  "~/Downloads"
    +          message-kill-buffer-on-exit t
    +          mu4e-compose-signature-auto-include t
    +          mu4e-view-show-images t
    +          mu4e-view-show-addresses t)
    +    )
     
    @@ -4191,26 +4191,26 @@ Choose account label to feed msmtp -a option based on From header in Message buf

    Additional config

    -
    (use-package! mu4e
    -  :config
    -  ;; Use imagemagick, if available.
    -  (when (fboundp 'imagemagick-register-types)
    -    (imagemagick-register-types))
    +
      (use-package! mu4e
    +    :config
    +    ;; Use imagemagick, if available.
    +    (when (fboundp 'imagemagick-register-types)
    +      (imagemagick-register-types))
     
    -  ;; Sometimes html email is just not readable in a text based client, this lets me open the
    -  ;; email in my browser.
    -  (add-to-list 'mu4e-view-actions '("View in browser" . mu4e-action-view-in-browser) t)
    +    ;; Sometimes html email is just not readable in a text based client, this lets me open the
    +    ;; email in my browser.
    +    (add-to-list 'mu4e-view-actions '("View in browser" . mu4e-action-view-in-browser) t)
     
    -  ;; Spell checking ftw.
    -  (add-hook 'mu4e-compose-mode-hook 'flyspell-mode)
    +    ;; Spell checking ftw.
    +    (add-hook 'mu4e-compose-mode-hook 'flyspell-mode)
     
    -  ;; Use Helm to select mailboxes
    -  (setq mu4e-completing-read-function 'completing-read)
    -  ;; Don't ask for a 'context' upon opening mu4e
    -  (setq mu4e-context-policy 'pick-first)
    -  ;; Don't ask to quit... why is this the default?
    -  (setq mu4e-confirm-quit nil)
    -  )
    +    ;; Use Helm to select mailboxes
    +    (setq mu4e-completing-read-function 'completing-read)
    +    ;; Don't ask for a 'context' upon opening mu4e
    +    (setq mu4e-context-policy 'pick-first)
    +    ;; Don't ask to quit... why is this the default?
    +    (setq mu4e-confirm-quit nil)
    +    )
     
    @@ -4220,17 +4220,17 @@ Choose account label to feed msmtp -a option based on From header in Message buf

    Provide Information

    -
    (use-package! mu4e
    -  :config
    -  (setq mu4e-user-mail-address-list '("dehaeze.thomas@gmail.com" "thomas.dehaeze@esrf.fr")
    -        mu4e-compose-signature "Thomas Dehaeze\n"
    -        user-mail-address "dehaeze.thomas@gmail.com")
    -  ;; Default Folders
    -  (setq mu4e-sent-folder "/gmail/Sent"
    -        mu4e-drafts-folder "/gmail/Drafts"
    -        mu4e-trash-folder "/gmail/Trash"
    -        mu4e-refile-folder "/gmail/Archive")
    -  )
    +
      (use-package! mu4e
    +    :config
    +    (setq mu4e-user-mail-address-list '("dehaeze.thomas@gmail.com" "thomas.dehaeze@esrf.fr")
    +          mu4e-compose-signature "Thomas Dehaeze\n"
    +          user-mail-address "dehaeze.thomas@gmail.com")
    +    ;; Default Folders
    +    (setq mu4e-sent-folder "/gmail/Sent"
    +          mu4e-drafts-folder "/gmail/Drafts"
    +          mu4e-trash-folder "/gmail/Trash"
    +          mu4e-refile-folder "/gmail/Archive")
    +    )
     
    @@ -4240,12 +4240,12 @@ Choose account label to feed msmtp -a option based on From header in Message buf

    Receiving emails using mbsync

    -
    (use-package! mu4e
    -  :config
    -  (setq mu4e-get-mail-command "checkmail"
    -        mu4e-update-interval nil
    -        mu4e-change-filenames-when-moving t) ;; Fix for mbsync
    -  )
    +
      (use-package! mu4e
    +    :config
    +    (setq mu4e-get-mail-command "checkmail"
    +          mu4e-update-interval nil
    +          mu4e-change-filenames-when-moving t) ;; Fix for mbsync
    +    )
     
    @@ -4255,41 +4255,41 @@ Choose account label to feed msmtp -a option based on From header in Message buf

    Contexts

    -
    (use-package! mu4e
    -  :config
    -  (setq mu4e-contexts
    -        `( ,(make-mu4e-context
    -             :name "gmail"
    -             :enter-func (lambda () (mu4e-message "Switch to the gmail context"))
    -             :match-func (lambda (msg) (when msg
    -                                         (string-prefix-p "/gmail" (mu4e-message-field msg :maildir))))
    -             :leave-func (lambda () (mu4e-clear-caches))
    -             :vars '(
    -                     (user-mail-address . "dehaeze.thomas@gmail.com")
    -                     (user-full-name        . "Thomas Dehaeze")
    -                     (mu4e-sent-folder . "/gmail/Sent")
    -                     (mu4e-trash-folder . "/gmail/Trash")
    -                     (mu4e-drafts-folder . "/gmail/Drafts")
    -                     (mu4e-refile-folder . "/gmail/Archive")
    -                     (mu4e-compose-signature  . "Thomas Dehaeze\n")
    -                     ))
    -           ,(make-mu4e-context
    -             :name "esrf"
    -             :enter-func (lambda () (mu4e-message "Switch to the esrf context"))
    -             :match-func (lambda (msg) (when msg
    -                                         (string-prefix-p "/esrf" (mu4e-message-field msg :maildir))))
    -             :leave-func (lambda () (mu4e-clear-caches))
    -             :vars '(
    -                     (user-mail-address . "thomas.dehaeze@esrf.fr")
    -                     (user-full-name        . "Thomas Dehaeze")
    -                     (mu4e-sent-folder . "/esrf/Sent")
    -                     (mu4e-trash-folder . "/esrf/Trash")
    -                     (mu4e-drafts-folder . "/esrf/Drafts")
    -                     (mu4e-refile-folder . "/esrf/Archive")
    -                     (mu4e-compose-signature  . "Thomas Dehaeze\n")
    -                     ))
    -           ))
    -  )
    +
      (use-package! mu4e
    +    :config
    +    (setq mu4e-contexts
    +          `( ,(make-mu4e-context
    +               :name "gmail"
    +               :enter-func (lambda () (mu4e-message "Switch to the gmail context"))
    +               :match-func (lambda (msg) (when msg
    +                                           (string-prefix-p "/gmail" (mu4e-message-field msg :maildir))))
    +               :leave-func (lambda () (mu4e-clear-caches))
    +               :vars '(
    +                       (user-mail-address . "dehaeze.thomas@gmail.com")
    +                       (user-full-name        . "Thomas Dehaeze")
    +                       (mu4e-sent-folder . "/gmail/Sent")
    +                       (mu4e-trash-folder . "/gmail/Trash")
    +                       (mu4e-drafts-folder . "/gmail/Drafts")
    +                       (mu4e-refile-folder . "/gmail/Archive")
    +                       (mu4e-compose-signature  . "Thomas Dehaeze\n")
    +                       ))
    +             ,(make-mu4e-context
    +               :name "esrf"
    +               :enter-func (lambda () (mu4e-message "Switch to the esrf context"))
    +               :match-func (lambda (msg) (when msg
    +                                           (string-prefix-p "/esrf" (mu4e-message-field msg :maildir))))
    +               :leave-func (lambda () (mu4e-clear-caches))
    +               :vars '(
    +                       (user-mail-address . "thomas.dehaeze@esrf.fr")
    +                       (user-full-name        . "Thomas Dehaeze")
    +                       (mu4e-sent-folder . "/esrf/Sent")
    +                       (mu4e-trash-folder . "/esrf/Trash")
    +                       (mu4e-drafts-folder . "/esrf/Drafts")
    +                       (mu4e-refile-folder . "/esrf/Archive")
    +                       (mu4e-compose-signature  . "Thomas Dehaeze\n")
    +                       ))
    +             ))
    +    )
     
    @@ -4299,19 +4299,19 @@ Choose account label to feed msmtp -a option based on From header in Message buf

    Sending mails

    -
    (use-package! mu4e
    -  :config
    -  (setq message-send-mail-function 'message-send-mail-with-sendmail
    -        sendmail-program "/usr/bin/msmtp"
    -        user-full-name "Thomas Dehaeze")
    +
      (use-package! mu4e
    +    :config
    +    (setq message-send-mail-function 'message-send-mail-with-sendmail
    +          sendmail-program "/usr/bin/msmtp"
    +          user-full-name "Thomas Dehaeze")
     
    -  ;; This prevents saving the email to the Sent folder since gmail will do this for us on their end.
    -  (setq mu4e-sent-messages-behavior 'delete)
    +    ;; This prevents saving the email to the Sent folder since gmail will do this for us on their end.
    +    (setq mu4e-sent-messages-behavior 'delete)
     
    -  ;; Use the correct account context when sending mail based on the from header.
    -  (setq message-sendmail-envelope-from 'header)
    -  (add-hook 'message-send-mail-hook 'choose-msmtp-account)
    -  )
    +    ;; Use the correct account context when sending mail based on the from header.
    +    (setq message-sendmail-envelope-from 'header)
    +    (add-hook 'message-send-mail-hook 'choose-msmtp-account)
    +    )
     
    @@ -4321,16 +4321,16 @@ Choose account label to feed msmtp -a option based on From header in Message buf

    Bookmarks

    -
    (use-package! mu4e
    -  :config
    -  (setq mu4e-bookmarks `(,(make-mu4e-bookmark
    -                          :name "All Inboxes"
    -                          :query "maildir:/gmail/Inbox OR maildir:/esrf/Inbox"
    -                          :key ?i)
    -                         ("flag:unread" "Unread messages" ?u)
    -                         ("date:today..now" "Today's messages" ?t)
    -                         ("date:7d..now" "Last 7 days" ?w)))
    -  )
    +
      (use-package! mu4e
    +    :config
    +    (setq mu4e-bookmarks `(,(make-mu4e-bookmark
    +                            :name "All Inboxes"
    +                            :query "maildir:/gmail/Inbox OR maildir:/esrf/Inbox"
    +                            :key ?i)
    +                           ("flag:unread" "Unread messages" ?u)
    +                           ("date:today..now" "Today's messages" ?t)
    +                           ("date:7d..now" "Last 7 days" ?w)))
    +    )
     
    @@ -4341,101 +4341,101 @@ Choose account label to feed msmtp -a option based on From header in Message buf

    Doom init.el

    -
    (when noninteractive
    -  (after! undo-tree
    -    (global-undo-tree-mode -1)))
    +
      (when noninteractive
    +    (after! undo-tree
    +      (global-undo-tree-mode -1)))
     
    -(doom! :completion
    -       company           ; the ultimate code completion backend
    -       helm              ; the *other* search engine for love and life
    -       ivy               ; a search engine for love and life
    +  (doom! :completion
    +         company           ; the ultimate code completion backend
    +         helm              ; the *other* search engine for love and life
    +         ivy               ; a search engine for love and life
     
    -       :ui
    -       doom              ; what makes DOOM look the way it does
    -       deft
    -       hl-todo           ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
    -       hydra
    -       modeline
    -       ophints           ; highlight the region an operation acts on
    -       (popup            ; tame sudden yet inevitable temporary windows
    -        +all             ; catch all popups that start with an asterix
    -        +defaults)       ; default popup rules
    -       unicode           ; extended unicode support for various languages
    -       vc-gutter         ; vcs diff in the fringe
    -       vi-tilde-fringe   ; fringe tildes to mark beyond EOB
    -       workspaces        ; tab emulation, persistence & separate workspaces
    -       (emoji +unicode)
    +         :ui
    +         doom              ; what makes DOOM look the way it does
    +         deft
    +         hl-todo           ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
    +         hydra
    +         modeline
    +         ophints           ; highlight the region an operation acts on
    +         (popup            ; tame sudden yet inevitable temporary windows
    +          +all             ; catch all popups that start with an asterix
    +          +defaults)       ; default popup rules
    +         unicode           ; extended unicode support for various languages
    +         vc-gutter         ; vcs diff in the fringe
    +         vi-tilde-fringe   ; fringe tildes to mark beyond EOB
    +         workspaces        ; tab emulation, persistence & separate workspaces
    +         (emoji +unicode)
     
    -       :editor
    -       (evil +everywhere); come to the dark side, we have cookies
    -       fold              ; (nigh) universal code folding
    -       rotate-text       ; cycle region at point between text candidates
    -       snippets          ; my elves. They type so I don't have to
    -       word-wrap         ; soft wrapping with language-aware indent
    +         :editor
    +         (evil +everywhere); come to the dark side, we have cookies
    +         fold              ; (nigh) universal code folding
    +         rotate-text       ; cycle region at point between text candidates
    +         snippets          ; my elves. They type so I don't have to
    +         word-wrap         ; soft wrapping with language-aware indent
     
    -       :emacs
    -       (dired +icons)    ; making dired pretty [functional]
    -       electric          ; smarter, keyword-based electric-indent
    -       (ibuffer +icons)  ; interactive buffer management
    -       vc                ; version-control and Emacs, sitting in a tree
    -       undo
    +         :emacs
    +         (dired +icons)    ; making dired pretty [functional]
    +         electric          ; smarter, keyword-based electric-indent
    +         (ibuffer +icons)  ; interactive buffer management
    +         vc                ; version-control and Emacs, sitting in a tree
    +         undo
     
    -       :term
    -       eshell            ; a consistent, cross-platform shell (WIP)
    -       vterm
    +         :term
    +         eshell            ; a consistent, cross-platform shell (WIP)
    +         vterm
     
    -       :tools
    -       debugger          ; Stepping through code, to help you add bugs
    -       (eval +overlay)     ; run code, run (also, repls)
    -       (lookup           ; helps you navigate your code and documentation
    -        +docsets)        ; ...or in Dash docsets locally
    -       lsp
    -       magit             ; a git porcelain for Emacs
    -       docker
    -       ;;pass              ; password manager for nerds
    -       pdf               ; pdf enhancements
    -       eval
    -       biblio
    -       (lookup +dictionary)
    +         :tools
    +         debugger          ; Stepping through code, to help you add bugs
    +         (eval +overlay)     ; run code, run (also, repls)
    +         (lookup           ; helps you navigate your code and documentation
    +          +docsets)        ; ...or in Dash docsets locally
    +         lsp
    +         magit             ; a git porcelain for Emacs
    +         docker
    +         ;;pass              ; password manager for nerds
    +         pdf               ; pdf enhancements
    +         eval
    +         biblio
    +         (lookup +dictionary)
     
    -       :checkers
    -       syntax          ; tasing you for every semicolon you forget
    -       spell          ; tasing you for misspelling mispelling
    +         :checkers
    +         syntax          ; tasing you for every semicolon you forget
    +         spell          ; tasing you for misspelling mispelling
     
    -       :lang
    -       data              ; config/data formats
    -       emacs-lisp        ; drown in parentheses
    -       go
    -       (javascript
    -        +lsp)
    -       (latex
    -        +latexmk
    -        +lsp)
    -       ;; markdown          ; writing docs for people to ignore
    -       (org              ; organize your plain life in plain text
    -        +dragndrop       ; drag & drop files/images into org buffers
    -        +hugo            ; use Emacs for hugo blogging
    -        +roam         ;
    -        +present)        ; using org-mode for presentations
    -       python            ; beautiful is better than ugly
    -       (sh                ; she sells {ba,z,fi}sh shells on the C xor
    -        +lsp)
    -       (web
    -        +lsp)
    -       yaml
    +         :lang
    +         data              ; config/data formats
    +         emacs-lisp        ; drown in parentheses
    +         go
    +         (javascript
    +          +lsp)
    +         (latex
    +          +latexmk
    +          +lsp)
    +         ;; markdown          ; writing docs for people to ignore
    +         (org              ; organize your plain life in plain text
    +          +dragndrop       ; drag & drop files/images into org buffers
    +          +hugo            ; use Emacs for hugo blogging
    +          +roam         ;
    +          +present)        ; using org-mode for presentations
    +         python            ; beautiful is better than ugly
    +         (sh                ; she sells {ba,z,fi}sh shells on the C xor
    +          +lsp)
    +         (web
    +          +lsp)
    +         yaml
     
    -       :email
    -       (mu4e +gmail)
    +         :email
    +         (mu4e +gmail)
     
    -       :app
    -       calendar
    -       ;;(rss +org)        ; emacs as an RSS reader
    -       ;;write             ; emacs for writers (fiction, notes, papers, etc.)
    +         :app
    +         calendar
    +         ;;(rss +org)        ; emacs as an RSS reader
    +         ;;write             ; emacs for writers (fiction, notes, papers, etc.)
     
    -       :config
    -       literate
    -       (default +bindings)
    -       )
    +         :config
    +         literate
    +         (default +bindings)
    +         )
     
    @@ -4445,103 +4445,103 @@ Choose account label to feed msmtp -a option based on From header in Message buf

    Doom packages.el

    -
    ;; Vimrc
    -(package! vimrc-mode)
    +
      ;; Vimrc
    +  (package! vimrc-mode)
     
    -
    ;; Automatic toggling of LaTeX fragments
    -(package! org-fragtog)
    +
      ;; Automatic toggling of LaTeX fragments
    +  (package! org-fragtog)
     
    -
    ;; custom blocks and links for org-mode
    -(package! org-special-block-extras)
    +
      ;; custom blocks and links for org-mode
    +  (package! org-special-block-extras)
     
    -
    ;; Nice theme
    -(package! poet-theme)
    +
      ;; Nice theme
    +  (package! poet-theme)
     
    -
    ;; Major mode for SPICE
    -(package! spice-mode)
    +
      ;; Major mode for SPICE
    +  (package! spice-mode)
     
    -
    ;; Import file to Org-mode
    -(package! org-pandoc-import
    -  :recipe (:host github
    -           :repo "tecosaur/org-pandoc-import"
    -           :files ("*.el" "filters" "preprocessors")))
    +
      ;; Import file to Org-mode
    +  (package! org-pandoc-import
    +    :recipe (:host github
    +             :repo "tecosaur/org-pandoc-import"
    +             :files ("*.el" "filters" "preprocessors")))
     
    -
    ;; Renders Org-mode citations in CSL styles
    -(package! citeproc-org)
    +
      ;; Renders Org-mode citations in CSL styles
    +  (package! citeproc-org)
     
    -
    ;; Org-mode modules for citations, cross-references, bibliographies
    -(package! org-ref)
    +
      ;; Org-mode modules for citations, cross-references, bibliographies
    +  (package! org-ref)
     
    -
    ;; Alert notifications for org-agenda
    -(package! org-wild-notifier)
    +
      ;; Alert notifications for org-agenda
    +  (package! org-wild-notifier)
     
    -
    ;; Display Google Calendar in org-calendar
    -(package! org-gcal)
    +
      ;; Display Google Calendar in org-calendar
    +  (package! org-gcal)
     
    -
    ;; Turn table into subfigure
    -(package! ox-latex-subfigure
    -  :recipe (:host github :repo "linktohack/ox-latex-subfigure"))
    +
      ;; Turn table into subfigure
    +  (package! ox-latex-subfigure
    +    :recipe (:host github :repo "linktohack/ox-latex-subfigure"))
     
    -
    ;; Major Mode for Matlab
    -(package! matlab-mode
    -  :recipe (:host github :repo "matlab-mode/mirror"))
    +
      ;; Major Mode for Matlab
    +  (package! matlab-mode
    +    :recipe (:host github :repo "matlab-mode/mirror"))
     
    -
    ;; Org-mode query language
    -(package! org-ql)
    +
      ;; Org-mode query language
    +  (package! org-ql)
     
    -
    ;; Display Org Mode priorities as custom strings
    -(package! org-fancy-priorities)
    +
      ;; Display Org Mode priorities as custom strings
    +  (package! org-fancy-priorities)
     
    -
    ;; Web Server
    -(package! web-server)
    +
      ;; Web Server
    +  (package! web-server)
     
    -
    ;; Don't use this default package in Doom
    -(package! evil-escape :disable t)
    +
      ;; Don't use this default package in Doom
    +  (package! evil-escape :disable t)
     
    @@ -4549,7 +4549,7 @@ Choose account label to feed msmtp -a option based on From header in Message buf

    Author: Dehaeze Thomas

    -

    Created: 2021-01-01 ven. 20:08

    +

    Created: 2021-01-03 dim. 22:19

    diff --git a/docs/index.html b/docs/index.html index 534a787..bba42e7 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3,13 +3,14 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Dotfiles - Manjaro Linux +
    @@ -18,29 +19,13 @@ HOME

    Dotfiles - Manjaro Linux

    -

    -The general installation process is described here. +The general installation procedure is described here.

    -
    -

    Desktop Configuration

    -
    +

    +There are Specific configuration files for: +

    -
    -
    - -
    -

    Editors

    - -
    - -
    -

    Command Line

    -
    - -
    -
    - -
    -

    Multimedia

    -
    - -
    -
    - -
    -

    Internet Related

    -
    - -
    -
    - -
    -

    PDF Reader

    -
    - -
    -
    - -
    -

    File Managers

    -
    - -
    -
    - -
    -

    Organization

    -
    - -
    -
    - -
    -

    Others

    -
    -
    -
    -
    -
    -

    Author: Dehaeze Thomas

    -

    Created: 2021-01-01 ven. 21:59

    -
    diff --git a/docs/install.html b/docs/install.html index 616b6ae..0bdb252 100644 --- a/docs/install.html +++ b/docs/install.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Installation @@ -22,222 +22,94 @@

    Table of Contents

    -
    -

    Package Manager: yay

    -
    +
    +

    yay - Package Manager

    + -
    -

    Installation

    -
    +

    +Installation: +

    -
    sudo pacman -S yay
    +
      sudo pacman -S yay
     
    -
    -
    - -
    -

    CheatSheet

    -
    - +
    +@@ -615,33 +388,25 @@

    To check all installed packages: -pacman -Qq | fzf --preview 'pacman -Qil {}' --layout=reverse --bind 'enter:execute(pacman -Qil {} | less)'

    - - - - -
    -

    Git Setup

    - - -
    -

    Installation

    -
    -
    yay -S git
    +
      pacman -Qq | fzf --preview 'pacman -Qil {}' --layout=reverse --bind 'enter:execute(pacman -Qil {} | less)'
     
    -
    -

    Configuration

    -
    +
    +

    git - Version Control System

    +
    +

    +Installation: +

    +
    +
      yay -S git
    +
    +
    +

    Git Configuration:

    @@ -649,85 +414,51 @@ To check all installed packages:
  • ~/.gitconfig
  • ~/.gitignore_global
  • -
    -
    -
    -

    Diff-So-Fancy

    -

    -https://github.com/so-fancy/diff-so-fancy +Diff-So-Fancy is a nice addition to have good-looking diffs. +It can be installed like so:

    -
    -
    -

    Installation

    -
    -
    yay -S diff-so-fancy
    +
      yay -S diff-so-fancy
     
    -
    -
    -
    -

    Configuration

    -
    +

    +And configured with the following command: +

    -
    git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"
    +
      git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"
     
    -
    -
    -
    -
    -

    Credential Helper setup with Pass

    -

    -This is explained in a further part: Integration of Pass with Git. +pass can be used as credential helper for git repositories.

    -
    -
    -

    Terminal

    -
    +
    +

    termite - Terminal

    +

    -https://github.com/thestinger/termite +Termite is a very nice keyboard-centric terminal. +

    + +

    +It can be installed like so:

    -
    -
    -

    Termite

    -
    -
    -
    -

    Installation

    -
    -
    yay -S termite
    +
      yay -S termite
     
    -
    -
    -
    -

    Configuration

    -

    -termite.org +Its configuration file is described here.

    -
      -
    • ~/.config/termite/config
    • -
    -
    -
    - -
    -

    Cheatsheet

    -
    -
    Table 1: yay - Cheatsheet
    +
    +@@ -774,54 +505,22 @@ This is explained in a further part: Integration of Pass w
    Table 2: termite - Cheatsheet
    -
    -
    -

    Unicode Rxvt

    -
    -
    -
    -

    Installation

    -
    -
    -
    yay -S rxvt-unicode
    -
    -
    -
    -
    - -
    -

    Configuration

    -
    -

    -Most of Urxvt configuration is done in ~/.Xresources -

    -
    -
    -
    -
    - -
    -

    Shell: Bash and ZSH

    -
    +
    +

    bash - Shell

    +
    -
    -

    Installation

    -
    +

    +Installation: +

    -
    yay -S bash bash-completion zsh
    +
      yay -S bash bash-completion zsh
     
    -
    -
    -
    -

    Configuration

    -

    Bash configuration:

    @@ -833,38 +532,29 @@ Most of Urxvt configuration is done in ~/.Xresources
    -
    -
    -

    Terminal Multiplexer: Tmux

    -
    +
    +

    tmux - Terminal Multiplexer

    + -
    -

    Installation

    -
    +

    +Installation: +

    -
    yay -S tmux
    +
      yay -S tmux
     
    -
    -
    -
    -

    Configuration

    -

    TMUX configuration

    -
    -
    -
    -

    Ressources

    - -
    - -
    -

    Cheatsheet

    -
    - +
    +@@ -927,41 +612,26 @@ Most of Urxvt configuration is done in ~/.Xresources
    Table 3: tmux - Cheatsheet
    -

    Fonts

    -
    -
    -

    Installation

    -
    +

    +My font of choice is nerd-fonts-hack which can be installed as so: +

    -
    yay -S nerd-fonts-complete
    +
     yay -S nerd-fonts-hack
     

    -or just +For emojis, use:

    -
    yay -S nerd-fonts-hack
    +
      yay -S noto-fonts-emoji
     
    -

    -For emojis: -

    -
    -
    yay -S noto-fonts-emoji
    -
    -
    -
    -
    - -
    -

    Default fonts

    -

    Default font used:

    @@ -972,50 +642,62 @@ Default font used:

    -List all fonts available: fc-list +To list all fonts available:

    -
    +
    +
      fc-list
    +
    -
    -

    Select font

    -
    +

    +To select fonts using a GUI, gtk2fontsel can be used: +

    -
    yay -S gtk2fontsel
    +
      yay -S gtk2fontsel
     
    -
    -
    -

    Text Editors

    -
    +
    +

    emacs and vim - Text Editors

    +

    Neovim

    -https://github.com/neovim/neovim +I use Neovim for all the small edits.

    -
    -
    -

    Installation

    -
    +

    +Installation: +

    -
    yay -S neovim
    +
      yay -S neovim
     
    -
    + +

    +The Neovim configuration can be found here. +

    + +

    +Then install the plugin manager plug: +

    +
    +
      sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
    +      https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
    +
    -
    -

    Configuration

    -

    -Vim configuration +And to install/setup all the plugins:

    +
    +
      nvim +PlugInstall
    +  nvim +UpdateRemotePlugins
    +
    @@ -1024,36 +706,36 @@ List all fonts available: fc-list

    Emacs

    -https://www.gnu.org/software/emacs/ +I use Emacs and the Doom framework.

    -
    -
    -

    Installation

    -
    -
    -
    yay -S emacs
    -
    -
    -
    -
    - -
    -

    Configuration

    -

    -Doom Emacs configuration +Install Emacs:

    -
    -
    - -
    -

    SpellCheck with Aspell

    -
    -
    yay -S aspell aspell-en aspell-fr
    +
      yay -S emacs
     
    + +

    +And then the Doom framework: +

    +
    +
      git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d
    +  ~/.emacs.d/bin/doom install
    +
    +
    + +

    +The Emacs configuration can be found here. +

    + +

    +SpellCheck with Aspell: +

    +
    +
      yay -S aspell aspell-en aspell-fr
    +
    @@ -1062,37 +744,31 @@ List all fonts available: fc-list

    SSH setup

    -
    -
    -

    Generating a new SSH key

    -
    +

    +Generate a new SSH key: +

    -
    ssh-keygen -t rsa -b 4096 -C "dehaeze.thomas@gmail.com"
    +
      ssh-keygen -t rsa -b 4096 -C "dehaeze.thomas@gmail.com"
     
    -
    -
    -
    -

    Start the ssh-agent in the background

    -
    +

    +Start the ssh-agent in the background: +

    -
    eval "$(ssh-agent -s)"
    +
      eval "$(ssh-agent -s)"
     
    -
    -
    -
    -

    Add the SSH key to the ssh-agent

    -
    +

    +Add the SSH key to the ssh-agent: +

    -
    ssh-add ~/.ssh/id_rsa
    +
      ssh-add ~/.ssh/id_rsa
     
    -

    GnuPG

    @@ -1100,110 +776,66 @@ List all fonts available: fc-list

    https://gnupg.org/

    -
    -
    -

    Install the gnupg package:

    -
    +

    +Install the gnupg package: +

    -
    yay -S gnupg
    +
      yay -S gnupg
     
    -
    -
    -
    -

    Create a key pair

    -
    +

    +Create a key pair: +

    -
    gpg --full-gen-key
    +
      gpg --full-gen-key
     
    -
    -
    -
    -

    Configure the gpg-agent to cache the passphrase

    -

    -Edit the following file ~/.gnupg/gpg-agent.conf +To configure the gpg-agent to cache the passphrase, edit the following file ~/.gnupg/gpg-agent.conf:

    -
    -
    default-cache-ttl 60480000
    -max-cache-ttl 60480000
    +
      default-cache-ttl 60480000
    +  max-cache-ttl 60480000
     
    -
    -
    - -
    -

    Gnome-Keyring and automatic GnuPG key unlocking

    -
    -

    -Note: GNOME users, and by extension any gnome-keyring user may have to follow the instructions at the end of the previous section on enabling autologin. -

    -Alternative: https://github.com/cruegge/pam-gnupg +Install Gnome-Keyring to automatically unlock the GnuPG keys:

    -
    -
    -
    - -
    -

    Launcher - Rofi

    -
    -

    -https://github.com/DaveDavenport/rofi -

    - -

    -Alternative: -

    -
      -
    • dmenu is sometimes used
    • -
    -
    - -
    -

    Installation

    -
    -
    yay -S rofi rofi-calc
    +
      yay -S gnome-keyring
     
    -
    -

    Setup rofi as a dmenu replacement

    -
    +
    +

    rofi - Application Launcher

    +

    -Setup rofi as a dmenu replacement in ~/.i3/config: +Rofi is a very nice alternative to dmenu.

    -
    -bindsym $mod+d exec --no-startup-id rofi -show run
    +
    +

    +Installation: +

    +
    +
      yay -S dmenu rofi rofi-calc
     
    -
    - -
    -

    Run sudo commands with rofi

    -
    -

    -https://github.com/DaveDavenport/rofi/issues/584#issuecomment-384555551 -

    -Use sudo -A, that will open a rofi prompt to ask for the password. +To be able to run sudo commands with rofi (github issue), the command sudo -A can be used: it opens a rofi prompt to ask for the password.

    For that to work, we need to add the following code to ~/.profile:

    -
    export SUDO_ASKPASS=~/.local/bin/askpass-rofi
    +
      export SUDO_ASKPASS=~/.local/bin/askpass-rofi
     
    @@ -1211,130 +843,68 @@ For that to work, we need to add the following code to ~/.profile: The askpass script is:

    -
    #!/bin/sh
    +
      #!/bin/sh
     
    -# Take password prompt from STDIN, print password to STDOUT
    -# the sed piece just removes the colon from the provided
    -# prompt: rofi -p already gives us a colon
    -rofi -dmenu \
    -     -password \
    -     -no-fixed-num-lines \
    -     -p "$(printf "$1" | sed s/://)"
    +  rofi -dmenu \
    +       -password \
    +       -no-fixed-num-lines \
    +       -p "$(printf "$1" | sed s/://)"
     
    -
    -
    -

    Password Manager: Pass

    -
    +
    +

    pass - Password Manager

    + -
    -

    Install the pass package

    -
    -
    -
    yay -S pass
    -
    -
    -
    -
    - -
    -

    Initialize the password store as a git repository

    -
    -
    -
    pass git init
    -pass git remote add origin https://github.com/tdehaeze/pass.git
    -
    -
    -
    -
    - -
    -

    Gui Manager

    -

    -https://github.com/IJHack/qtpass +Installation:

    -
    -
    yay -S qtpass
    +
      yay -S pass
     
    -
    -
    -
    -

    Integration with Rofi

    -

    -https://github.com/carnager/rofi-pass +Initialize the password store as a git repository

    -
    - -
    -

    Installation

    -
    -
    yay -S rofi-pass
    +
      pass git init
    +  pass git remote add origin https://github.com/tdehaeze/pass.git
     
    +

    +Gui Manager: qtpass +

    +
    +
      yay -S qtpass
    +
    +
    + +

    +Integration with Rofi: rofi-pass +

    +
    +
      yay -S rofi-pass
    +
    +

    Then we can add a shortcut to rofi-pass on i3 config.

    -
    -
    -
    -

    Alternative

    -

    -https://github.com/ibizaman/pass-clip +Integration with Git: pass-git-helper

    -
    -
    yay -S pass-clip
    +
      yay -S pass-git-helper
     
    -
    -
    -
    -
    -

    Integration with Browsers

    -
    -

    -This is explained here. -

    -
    -
    - -
    -

    Integration with Git

    - -
    -

    Installation

    -
    -
    -
    yay -S pass-git-helper
    -
    -
    -
    -
    - -
    -

    Configuration

    -

    First, add the relation between repository addresses and entries in pass. This is done in the following config file .config/pass-git-helper/git-pass-mapping.ini:

    @@ -1354,8 +924,6 @@ Then, add the credential helper on the git configuration file ~/.gitconfig username = tdehaeze
    - -

    Integration with other programs

    @@ -1383,53 +951,53 @@ Integrate pass in other programs is usually very easy, here are few examples: Bitwarden https://github.com/bitwarden/cli

    -
    yay -Ss bitwarden-bin bitwarden-cli-bin
    +
      yay -Ss bitwarden-bin bitwarden-cli-bin
     
    -
    -

    Bookmark Manager: Buku

    -
    +
    +

    buku - Bookmark Manager

    + -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S buku
    +
      yay -S buku
     
    -
    -

    Integration with Rofi

    -
    +
    +

    Integration with Rofi

    + -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    wget https://raw.githubusercontent.com/carnager/buku_run/master/buku_run -o ~/.local/bin/buku_run
    -chmod +x ~/.local/bin/buku_run
    +
      wget https://raw.githubusercontent.com/carnager/buku_run/master/buku_run -o ~/.local/bin/buku_run
    +  chmod +x ~/.local/bin/buku_run
     
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    The configuration file is here: ~/.config/buku_run/config

    @@ -1457,8 +1025,8 @@ The database is stored in ~/.local/share/buku/bookmarks.db. We initialize a git repository in this folder:

    -
    cd ~/.local/share/buku/bookmarks.db
    -git init
    +
      cd ~/.local/share/buku/bookmarks.db
    +  git init
     
    @@ -1471,8 +1039,7 @@ To automatically run the script every day, a systemd unit is used: ~/.conf

    -
    systemctl start --user bukugit.timer
    -systemctl enable --user bukugit.timer
    +
      systemctl --user start --now bukugit.timer
     
    @@ -1497,7 +1064,7 @@ To remove them, use: buku --replace '2018dec20' '' Run:

    -
    bukuserver run --host 127.0.0.1 --port 5001
    +
      bukuserver run --host 127.0.0.1 --port 5001
     
    @@ -1507,9 +1074,9 @@ And then browse to http://127.0.0.1:5001.
    -
    -

    Cheatsheet

    -
    +
    +

    Cheatsheet

    +
    @@ -1565,19 +1132,19 @@ And then browse to http://127.0.0.1:5001. -
    -

    Browser: qutebrowser

    -
    +
    +

    qutebrowser - Browser

    + -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S qutebrowser
    +
      yay -S qutebrowser
     
    @@ -1587,19 +1154,19 @@ And then browse to http://127.0.0.1:5001.

    View Pdf inside qutebrowser with pdfjs

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S pdfjs
    +
      yay -S pdfjs
     
    -
    -

    Usage

    -
    +
    +

    Usage

    +

    When opening a pdf file on qutebrowser, you’ll be ask for options:

    @@ -1651,7 +1218,7 @@ Add the key-binding on ~/.config/qutebrowser/config.py

    -config.bind(',p', 'spawn --userscript password_fill')
    +  config.bind(',p', 'spawn --userscript password_fill')
     

    @@ -1679,19 +1246,38 @@ config.bind('B', 'spawn buku -a {url}')

    Spell Checking

    -
    /usr/share/qutebrowser/scripts/dictcli.py install fr-FR
    -/usr/share/qutebrowser/scripts/dictcli.py install en-US
    +
      /usr/share/qutebrowser/scripts/dictcli.py install fr-FR
    +  /usr/share/qutebrowser/scripts/dictcli.py install en-US
     
    + +
    +

    firefox

    +
    +
    +
      yay -S firefox-developer-edition
    +
    -
    -

    Monitors

    -
    +

    +Addons: +

    + +
    +
    +
    + +
    +

    xrandr - Monitor Manager

    +
    -
    yay -S xorg-xrandr arandr
    +
      yay -S xorg-xrandr arandr
     
    @@ -1702,32 +1288,22 @@ config.bind('B', 'spawn buku -a {url}')
    -
    -

    Sound Setup

    -
    -
    -
    yay -S pulseaudio pavucontrol
    -
    -
    -
    -
    -

    Music Setup

    -
    -

    Sound Server - Pulse Audio

    -
    +
    +

    pulseaudio - Sound Server

    +

    https://wiki.archlinux.org/index.php/PulseAudio

    -Install +Installation:

    -
    yay -S pulseaudio pulseaudio-alsa pulseaudio-bluetooth
    +
      yay -S pulseaudio pulseaudio-alsa pulseaudio-bluetooth
     
    @@ -1741,95 +1317,35 @@ If sound is not working, should run pulseaudio --kill to kill the d
    -
    -

    Audio Server - MPD

    -
    +
    +

    pavucontrol - Sound Manager

    +

    -https://wiki.archlinux.org/index.php/Music_Player_Daemon +pavucontrol is used as a sound manager:

    -

    -=> Now Mopidy is used instead of MPD -

    -
    - -
    -

    Installation

    -
    -
    yay -S mpd
    +
      yay -S pavucontrol
     
    -
    -

    Automatic Startup

    -
    -
    -
    systemctl start --user mpd.service
    -systemctl enable --user mpd.service
    -
    -
    -
    -
    - -
    -

    Command line interface to MPD - MPC

    -
    -

    -https://github.com/MusicPlayerDaemon/mpc -

    - -

    -To install mpc: yay -S mpc. -

    - -
    - - --- -- - - - - - - - - - - - - - - - - - -
    CommandUsage
    mpc updateUpdate the library
    mpc rescanRescan the library
    -
    -
    -
    - -
    -

    Audio Server with Spotify - Mopidy

    -
    +
    +

    mopidy - Audio Server

    +

    https://github.com/mopidy/mopidy https://medium.com/@theos.space/using-mopidy-with-spotify-and-ncmpcpp-44352f4a2ce8

    -
    yay -S mopidy
    +
      yay -S mopidy
     
    -
    python3 -m pip install --user mopidy-mpd mopidy-jellyfin mopidy-spotify
    +
      python3 -m pip install --user mopidy-mpd mopidy-jellyfin mopidy-spotify
     
    @@ -1837,7 +1353,7 @@ To install mpc: yay -S mpc. To update local files:

    -
    mopidy local scan
    +
      mopidy local scan
     
    @@ -1847,27 +1363,21 @@ If mopidy is used, MPD should be disabled. (systemctl disable --user mpd.s
    -
    -

    MPD Client - ncmpcpp

    -
    +
    +

    ncmpcpp - MPD Client

    + -
    -

    Installation

    -
    +

    +Installation: +

    -
    yay -S ncmpcpp
    +
      yay -S ncmpcpp
     
    -
    -
    -
    -

    Config

    -

    The main config is located here: ~/.ncmpcpp/config. The key bindings can be configured here: ~/.ncmpcpp/bindings. @@ -1875,61 +1385,25 @@ The key bindings can be configured here: ~/.ncmpcpp/bindings.

    -
    -

    Cheatsheet

    -
    -

    -https://pkgbuild.com/~jelle/ncmpcpp/ -

    - - - --- -- - - - - - - -
    CommandUsage
    -
    -
    -
    - -
    -

    Library Manager - beets

    -
    +
    +

    beets - Library Manager

    + -
    -

    Installation

    -
    +

    +Installation; +

    -
    yay -S beets
    +
      yay -S beets
     
    -
    -
    -
    -

    Configuration

    -

    Configuration folder: ~/.config/beets/

    -
    -
    -
    -

    Cheatsheet

    -
    @@ -1954,78 +1428,46 @@ Configuration folder: ~/.config/beets/ -

    Movies

    -
    -

    Media Player - MPV

    -
    -
    -
    -

    Installation

    -
    +
    +

    mpv - Media Player

    +
    +

    +Installation: +

    -
    yay -S mpv
    +
      yay -S mpv
     
    -
    -
    -
    -

    Key Bindings

    -

    The configuration is set in /.config/mpv/input.conf.

    -
    -

    CheatSheet

    -
    -
    - - --- -- - - - - - - -
    CommandUsage
    -
    -
    -
    - -
    -

    Chromecast with CATT

    -
    +
    +

    catt - Chromecast

    + -
    -

    Installation

    -
    +

    +Installation: +

    -
    yay -S catt
    +
      yay -S catt
     
    -
    -
    -
    -

    Usage to cast videos to chromecast

    -
    +

    +Usage to cast videos to chromecast +

    @@ -2067,12 +1509,10 @@ The configuration is set in /.config/mpv/input.conf.
    -
    -
    -
    -

    Usage for controlling the device

    -
    +

    +Usage for controlling the device +

    @@ -2162,21 +1602,20 @@ The configuration is set in /.config/mpv/input.conf. -

    Contact Manager

    -
    -

    Google Conctacts: Khard

    -
    +
    +

    khard - Google Conctacts

    +

    https://github.com/scheibler/khard

    -
    yay -Ss khard
    +
      yay -Ss khard
     
    @@ -2195,11 +1634,11 @@ To search with Khard: khard <conctact-name>
    -
    -

    Mu

    -
    +
    +

    mu - Index Emails

    +
    -
    yay -Ss mu
    +
      yay -Ss mu
     
    @@ -2211,20 +1650,9 @@ This looks for contacts in all indexed emails.
    -
    -

    Connect with Phone

    -
    -
    -
    yay -S kdeconnect
    -
    -
    -
    -
    - - -
    -

    Chat Application - Weechat

    -
    +
    +

    weechat - Chat Application

    +

    https://weechat.org/files/doc/stable/weechat_user.en.html https://wiki.archlinux.org/index.php/WeeChat @@ -2232,11 +1660,11 @@ This looks for contacts in all indexed emails.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S weechat
    +
      yay -S weechat
     
    @@ -2244,7 +1672,7 @@ This looks for contacts in all indexed emails. Then we install some dependencies

    -
    yay -S tcl lua ruby
    +
      yay -S tcl lua ruby
     
    @@ -2254,7 +1682,7 @@ Then we install some dependencies

    Enable mouse support

    -
    /mouse enable
    +
      /mouse enable
     
    @@ -2320,34 +1748,34 @@ Then we install some dependencies

    -
    /set weechat.look.prefix_same_nick "⤷"
    -/set weechat.look.prefix_error "⚠"
    -/set weechat.look.prefix_action "⚡"
    -/set weechat.look.bar_more_down "▼▼"
    -/set weechat.look.bar_more_left "◀◀"
    -/set weechat.look.bar_more_right "▶▶"
    -/set weechat.look.bar_more_up "▲▲"
    -/set weechat.look.prefix_suffix "╡"
    -/set weechat.color.chat_nick_colors red,green,brown,blue,magenta,cyan,white,lightred,lightgreen,yellow,lightblue,lightmagenta,lightcyan
    -/set weechat.color.separator 31
    -/set buffers.color.current_fg 31
    -/set buffers.color.current_bg white
    -/set buffers.color.hotlist_message_fg 229
    -/set buffers.color.hotlist_private_fg 121
    -/set buffers.color.hotlist_highlight_fg 163
    -/set buffers.color.number 239
    -/set buffers.color.number_char 245
    -/set weechat.bar.title.conditions "${inactive}"
    -/set weechat.bar.title.color_fg black
    -/set weechat.bar.title.color_bg 31         #Or white if 31 does nothing
    +
      /set weechat.look.prefix_same_nick "⤷"
    +  /set weechat.look.prefix_error "⚠"
    +  /set weechat.look.prefix_action "⚡"
    +  /set weechat.look.bar_more_down "▼▼"
    +  /set weechat.look.bar_more_left "◀◀"
    +  /set weechat.look.bar_more_right "▶▶"
    +  /set weechat.look.bar_more_up "▲▲"
    +  /set weechat.look.prefix_suffix "╡"
    +  /set weechat.color.chat_nick_colors red,green,brown,blue,magenta,cyan,white,lightred,lightgreen,yellow,lightblue,lightmagenta,lightcyan
    +  /set weechat.color.separator 31
    +  /set buffers.color.current_fg 31
    +  /set buffers.color.current_bg white
    +  /set buffers.color.hotlist_message_fg 229
    +  /set buffers.color.hotlist_private_fg 121
    +  /set buffers.color.hotlist_highlight_fg 163
    +  /set buffers.color.number 239
    +  /set buffers.color.number_char 245
    +  /set weechat.bar.title.conditions "${inactive}"
    +  /set weechat.bar.title.color_fg black
    +  /set weechat.bar.title.color_bg 31         #Or white if 31 does nothing
     
    -
    @@ -2452,19 +1880,19 @@ Then, on weechat, type /edit.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S python2-websocket-client
    +
      yay -S python2-websocket-client
     
    -
    cd ~/.weechat/python
    -wget https://raw.githubusercontent.com/wee-slack/wee-slack/master/wee_slack.py
    -ln -s ../wee_slack.py autoload
    +
      cd ~/.weechat/python
    +  wget https://raw.githubusercontent.com/wee-slack/wee-slack/master/wee_slack.py
    +  ln -s ../wee_slack.py autoload
     
    @@ -2477,7 +1905,7 @@ wget https://raw.githubusercontent.com/wee-slack/wee-slack/master/wee_slack.py Log in to Slack:

    -
    /slack register
    +
      /slack register
     

    @@ -2485,7 +1913,7 @@ This command prints a link you should open in your browser to authorize WeeChat

    -
    /slack register [CODE_FROM_URL]
    +
      /slack register [CODE_FROM_URL]
     
    @@ -2493,7 +1921,7 @@ This command prints a link you should open in your browser to authorize WeeChat Your Slack team is now added, and you can complete setup by restarting the wee-slack script.

    -
    /python reload slack
    +
      /python reload slack
     
    @@ -2501,9 +1929,9 @@ Your Slack team is now added, and you can complete setup by restarting the wee-s If you don’t want to store your API token in plaintext you can use the secure features of weechat:

    -
    /secure passphrase this is a super secret password
    -/secure set slack_token [YOUR_SLACK_TOKEN]
    -/set plugins.var.python.slack.slack_api_token ${sec.data.slack_token}
    +
      /secure passphrase this is a super secret password
    +  /secure set slack_token [YOUR_SLACK_TOKEN]
    +  /set plugins.var.python.slack.slack_api_token ${sec.data.slack_token}
     
    @@ -2539,15 +1967,15 @@ It runs weechat inside tmux.
    -
    -

    Redshift

    -
    +
    +

    redshift

    +

    http://jonls.dk/redshift/

    -
    yay -S redshift
    +
      yay -S redshift
     
    @@ -2561,28 +1989,28 @@ It runs weechat inside tmux.

    -
    -

    Synchronize Mailboxes - Mbsync

    -
    +
    +

    mbsync - Synchronize Mailboxes

    + -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S isync
    +
      yay -S isync
     
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    ~/.mbsyncrc

    @@ -2628,47 +2056,47 @@ systemctl --user start syncmail.timer
    -
    -

    Send Mails - Msmtp

    -
    +
    +

    msmtp - Send Mails

    + -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S msmtp
    +
      yay -S msmtp
     
    -
    -

    Mail Index, Search and Tagging - Mu

    -
    +
    +

    mu - Mail Index, Search and Tagging

    +
    -
    -

    Mail Client - NeoMutt

    -
    +
    +

    neomutt - Mail Client

    + -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S neomutt
    +
      yay -S neomutt
     
    @@ -2678,7 +2106,7 @@ systemctl --user start syncmail.timer

    Display html mails

    -
    yay -S w3m
    +
      yay -S w3m
     
    @@ -2688,15 +2116,15 @@ systemctl --user start syncmail.timer

    Open Url from mail

    -
    yay -S urlview
    +
      yay -S urlview
     
    -
    -

    Ressources

    -
    +
    +

    Ressources

    +
    -
    -

    File Manager

    -
    +
    +

    ranger=/=pcmanfm - File Manager

    +

    Configuration files:

    @@ -2735,9 +2163,9 @@ Configuration files: https://github.com/ranger/ranger

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S ranger
     
    @@ -2745,9 +2173,9 @@ Configuration files:
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    The configuration file is ~/.config/ranger/rc.conf.

    @@ -2782,42 +2210,38 @@ It works better with Urxvt.
    -
    -

    Image viewer

    -
    -
    -
    -

    sxiv

    -
    +
    +

    sxiv - Image viewer

    + -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S sxiv
    +
      yay -S sxiv
     
    -
    -

    Open Gif

    -
    +
    +

    Open Gif

    +
    -
    sxiv -a file.gif
    +
      sxiv -a file.gif
     
    -
    -

    Cheatsheet

    -
    +
    +

    Cheatsheet

    +
    @@ -2867,13 +2291,12 @@ It works better with Urxvt. - -
    -

    HotKeyManager - SXHKD

    -
    +
    +

    sxhkd - HotKey Manager

    +
    -
    yay -S sxhkd
    +
      yay -S sxhkd
     
    @@ -2883,27 +2306,27 @@ Configuration file: SXHKD.
    -
    -

    Windows Manager - i3

    -
    +
    +

    i3 - Windows Manager

    +

    Link to the documentation

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S i3-gaps
    +
      yay -S i3-gaps
     
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    ~/.i3/config

    @@ -2911,9 +2334,9 @@ Configuration file: SXHKD.
    -
    -

    Polybar

    -
    +
    +

    polybar - Top Bar

    +

    https://polybar.github.io/

    @@ -2923,20 +2346,20 @@ Configuration file: SXHKD.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S polybar
    +
      yay -S polybar
     
    -
    -

    Compositor - Picom

    -
    +
    +

    picom - Compositor

    +

    https://wiki.archlinux.org/index.php/Picom

    @@ -2946,19 +2369,19 @@ Configuration file: SXHKD.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S picom
    +
      yay -S picom
     
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    ~/.config/picom/picom.conf

    @@ -2972,46 +2395,46 @@ Configuration file: SXHKD. Compton is run from .xprofile config in the background:

    -
    picom --daemon
    +
      picom --daemon
     
    -
    -

    Notification Manager - Dunst

    -
    +
    +

    dunst - Notification Manager

    + -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S dunst dunstify
    +
      yay -S dunst dunstify
     
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    ~/.config/dunst/dunstrc

    -
    -

    Usage

    -
    +
    +

    Usage

    +
    -
    dunstify --replace=16549 "AppName" "Message"
    +
      dunstify --replace=16549 "AppName" "Message"
     
    @@ -3027,26 +2450,29 @@ same application for instance.

    Office Suite

    -
    -

    WPS Office

    -
    +
    +

    libreoffice

    +
    -
    yay -S wps-office wps-office-extension-french-dictionary ttf-wps-fonts
    +
      yay -S libreoffice-fresh libreoffice-fresh-fr
     
    - -

    -Alternatives are: -

    -
      -
    • open-office
    • -
    -
    -

    Minimap SpreadSheet - SC-IM

    -
    +
    +

    wps Office

    +
    +
    +
      yay -S wps-office wps-office-extension-french-dictionary ttf-wps-fonts
    +
    +
    +
    +
    + +
    +

    sc-im - Minimap SpreadSheet

    +

    https://github.com/andmarti1424/sc-im https://www.youtube.com/watch?v=K_8_gazN7h0 @@ -3057,246 +2483,36 @@ It permits to open Excel files on the terminal very quickly.

    -
    yay -S sc-im
    +
      yay -S sc-im
     
    -
    -

    Managing Theme

    -
    -
    -
    -

    GTK Themes

    -
    +
    +

    blueman - Bluetooth Manager

    +

    -Gtk2 themes are managed using the file ~/.gtkrc-2.0 while Gtk3 themes are managed using ~/.config/gtk-3.0/settings.ini. +Bluetooth manager: https://github.com/blueman-project/blueman

    -
    - -
    -

    Gui Manager

    -
    -

    -To customize the look of the system using GUI application, run lxappearance. -

    - -

    -Installation: -

    -
    -
    yay -S lxappearance
    -
    -
    -
    -
    - -
    -

    Icons and themes

    -
    -
    -
    yay -S zukitwo-themes faenza-icon-theme
    -
    -
    -
    yay -S arc-gtk-theme
    -
    -
    -
    -
    -
    - -
    -

    QT Themes

    -
    -

    -Run qt5ct to manage QT Themes. -

    -
    -
    - -
    -

    XFT Themes

    -
    -

    -Some configuration are located in ~/.Xresources. -

    -
    -
    -
    - -
    -

    Advanced config

    -
    -
    -
    -

    Printer

    -
    -

    -https://wiki.archlinux.org/index.php/CUPS -Web based administration: http://localhost:631/ -

    - -

    -system-config-printer -

    - -

    -Check the queue -

    -
    -
    lpq
    -lpq -a # on all queues
    -
    -
    - -

    -Clear the queue -

    -
    -
    lprm   # remove last entry only
    -lprm - # remove all entries
    -
    -
    - -

    -Print a file -

    -
    -
    lpr -P printer_name filename.pdf
    -
    -
    - -

    -List available printers -

    -
    -
    lpstat -a
    -
    -
    - -

    -Stats about the printer -

    -
    -
    lpstat -p printer_name
    +
      yay -Ss blueman
     
    -
    - - --- -- - - - - - - - - - - - - - - - - - - - - - - -
    CommandUsage
    mhwd-kernel -liDetermine which kernel is used
    sudo mhwd-kernel -i linux419Install new kernel
    sudo mhwd-kernel -i linux419 rmcInstall new kernel and remove old one
    -
    -
    - -
    -

    Power Management Tool: Powertop

    -
    -

    -https://wiki.archlinux.org/index.php/Powertop -https://wiki.manjaro.org/index.php?title=Power_Savings -

    - -

    -PowerTop a diagnostic tool used to identify and report issues with power consumption and management. -

    -
    -
    yay -S powertop
    -
    -
    - - -

    -TLP is used for Power Management. -

    -
    -
    yay -S tlp
    -sudo systemctl enable tlp
    -sudo systemctl start tlp
    -sudo systemctl enable tlp-sleep
    -sudo systemctl start tlp-sleep
    -sudo tlp start
    -
    -
    - -

    -Thermald is used to automatically handle CPU frequency scaling according to system load. -

    -
    -
    yay -S thermald
    -sudo systemctl enable thermald
    -sudo systemctl start thermald
    -
    -
    -
    -
    - -
    -

    Lid open/close

    -
    -

    -https://wiki.archlinux.org/index.php/Power_management -

    - -

    -Should automatic show lock screen -

    - -

    -/etc/systemd/logind.conf -

    -
    -
    - -
    -

    Automatically Mount devices - Udiskie

    -
    +
    +

    udiskie - Automatically Mount devices

    +

    udiskie - Mount and unmount disks (https://github.com/coldfix/udiskie)

    -
    yay -S udiskie
    +
      yay -S udiskie
     
    @@ -3306,46 +2522,14 @@ Automatically run udiskie on startup.
    -
    -

    Format disks

    -
    +
    +

    LaTeX

    +

    -https://gparted.org/ +Installation

    - -

    -sudo gparted to format disks -

    - -

    -Using command line: -

    - -
    -
    - -
    -

    Bluetooth

    -
    -

    -Bluetooth manager: https://github.com/blueman-project/blueman -blueman-manager -

    -
    -
    -
    - - -

    Mathematical Software

    @@ -3410,21 +2566,15 @@ In order for LaTeX to be aware of new packages/classes, run sudo texhash https://github.com/sharkdp/insect

    -
    -
    -

    Installation

    -
    +

    +Installation +

    -
    yay -S insect
    +
      yay -S insect
     
    -
    -
    -
    -

    Usage

    -
    @@ -3448,7 +2598,6 @@ In order for LaTeX to be aware of new packages/classes, run sudo texhash -

    Matlab

    @@ -3457,17 +2606,15 @@ In order for LaTeX to be aware of new packages/classes, run sudo texhashhttps://wiki.archlinux.org/index.php/MATLAB#Installation

    -

    Link to the configuration.

    -
    -
    -

    Installation

    -
    +

    +Installation +

    -
    yay -S matlab
    +
      yay -S matlab
     
    @@ -3476,7 +2623,6 @@ If there is a problem when opening a Simulink file, check the solution

    SageMath

    @@ -3485,37 +2631,23 @@ If there is a problem when opening a Simulink file, check the solution
    http://www.sagemath.org/ https://wiki.archlinux.org/index.php/SageMath

    -
    -
    -

    Installation

    -
    +

    +Installation +

    -
    yay -S sagemath
    +
      yay -S sagemath
     
    -
    -
    -
    -

    Usage

    -

    Run sage -n jupyter to run jupyter notebooks

    - +
    +

    Python and Jupyter-notebook

    @@ -3523,79 +2655,41 @@ Run sage -n jupyter to run jupyter notebooks

    Download Manager

    -
    -

    Torrent Client - deluge

    -
    -

    -https://github.com/deluge-torrent/deluge -https://wiki.archlinux.org/index.php/Deluge -

    +
    +

    aria2 and aria2p

    +
    +
    +
      yay -S aria2
    +
    -
    -

    Installation

    -
    -
    yay -S deluge
    +
      python3 -m pip install --user aria2p[tui]
     
    -
    -

    Configuration

    -
    -

    -~/.config/deluge/ -

    -
    -
    - -
    -

    Command Line Interface

    -
    -

    -https://whatbox.ca/wiki/deluge_console_documentation -

    - -

    -Start the daemon using deluge -d. -Then run the CLI client using deluge-console. -

    -
    -
    -
    - -
    -

    Youtube-dl

    -
    +
    +

    transmission and tremc

    +
    -
    yay -S youtube-dl
    -
    -
    -
    - -
    -

    Download best audio

    -
    -
    -
    youtube-dl -f bestaudio url
    +
      yay -S tremc
     
    -
    -

    Download best video with audio

    -
    +
    +

    youtube-dl

    +
    -
    youtube-dl -f best url
    +
      yay -S youtube-dl
     
    -

    Default Applications

    @@ -3604,19 +2698,12 @@ Then run the CLI client using deluge-console. https://wiki.archlinux.org/index.php/Default_applications https://www.guyrutenberg.com/2018/01/20/set-default-application-using-xdg-mime/

    -
    -
    -

    Mailcap file

    -
    -
    -

    XDG-OPEN

    -
    +

    ~/.config/mimeapps.list

    -

    Desktop files

    @@ -3634,35 +2721,10 @@ Then run the CLI client using deluge-console.

    Bibliography Management

    - -

    I am using a plain bibtex file with org-ref (link).

    - -
    -

    Alternatives:

    -
    -

    -GUI: -

    -
      -
    • Zotero
    • -
    • Mendeley
    • -
    - -

    -Command line based: -

    - -
    -
    @@ -3673,32 +2735,26 @@ Command line based:

    -
    -

    Vdirsyncer - Sync calendars

    -
    +
    +

    vdirsyncer - Sync calendars

    + -
    -

    Installation

    -
    +

    +Installation: +

    -
    yay -S vdirsyncer python-requests-oauthlib
    +
      yay -S vdirsyncer python-requests-oauthlib
     
    -
    sudo pip install requests-oauthlib
    +
      sudo pip install requests-oauthlib
     
    -
    -
    -
    -

    Cheatsheet

    -
    @@ -3720,23 +2776,20 @@ Command line based:
    -
    -
    -
    -

    Automation - Systemd

    -

    -First, run +Setup the google_calendar:

    -
    vdirsyncer discover google_calendar
    +
      vdirsyncer discover google_calendar
     
    +

    +And start the systemd timer that automatically synchronize the calendars; +

    -
    systemctl --user enable vdirsyncer.timer
    -systemctl --user start vdirsyncer.timer
    +
      systemctl --user enable --now vdirsyncer.timer
     
    @@ -3744,46 +2797,41 @@ systemctl --user start vdirsyncer.timer To check the status of the service:

    -
    systemctl --user status vdirsyncer.service
    +
      systemctl --user status vdirsyncer.service
     
    -
    -
    -

    Calendar Client - Khal

    -
    +
    +

    khal - Calendar Client

    + -
    -

    Installation

    -
    +

    +Installation: +

    -
    yay -S khal
    +
      yay -S khal
     
    -
    -
    -
    -

    Import ICS files

    -
    +

    +Import ICS files: +

    -
    khal import even.ics
    +
      khal import even.ics
     
    -
    -
    -

    RSS Reader - newsboat

    -
    +
    +

    newsboat - RSS Reader

    +

    GUI Alternatives:

    @@ -3791,23 +2839,7 @@ GUI Alternatives:
  • http://www.rssowl.org/
  • https://github.com/jangernert/FeedReader
  • -

    -With Emacs: -

    - -

    -On the phone: -

    - -
    -
    -

    Newsboat

    -

    Link to configuration.

    @@ -3816,54 +2848,42 @@ On the phone: https://github.com/newsboat/newsboat https://wiki.archlinux.org/index.php/Newsboat

    -
    -
    -

    Installation

    -
    +

    +Installation: +

    -
    yay -S newboat
    +
      yay -S newboat
     
    -
    -
    -
    -

    Configuration

    - -
    - -
    -
    -
    -

    Task Manager - Org Mode

    +
    +

    orgmode - Task Manager

    -
    -

    PDF Reader - Zathura

    -
    +
    +

    zathura - PDF Reader

    + -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S zathura
    +
      yay -S zathura
     
    @@ -3871,7 +2891,7 @@ On the phone: Then add dependecies to view specific files:

    -
    yay -S zathura-pdf-mupdf zathura-djvu zathura-ps zathura-cb
    +
      yay -S zathura-pdf-mupdf zathura-djvu zathura-ps zathura-cb
     
    @@ -3881,18 +2901,18 @@ It seems that mupdf is better that poppler to view pdf.
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    ~/.config/zathura/zathurarc

    -
    -

    Cheatsheet

    -
    +
    +

    Cheatsheet

    +
    @@ -3995,11 +3015,11 @@ pdfpc is a great tool for showing pdf presentations. It support: -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S pdfpc
    +
      yay -S pdfpc
     
    @@ -4009,17 +3029,17 @@ pdfpc is a great tool for showing pdf presentations. It support:

    Video support

    -
    yay -S gst-plugins-ugly gst-plugins-good gst-plugins-base-libs gst-plugins-base gst-plugins-bad gst-libav
    +
      yay -S gst-plugins-ugly gst-plugins-good gst-plugins-base-libs gst-plugins-base gst-plugins-bad gst-libav
     
    -
    -

    Usage

    -
    +
    +

    Usage

    +
    -
    pdfpc filename.pdf
    +
      pdfpc filename.pdf
     
    @@ -4027,11 +3047,11 @@ pdfpc is a great tool for showing pdf presentations. It support:
    -
    -

    DisplayManager - None

    -
    +
    +

    Display Manager

    +

    -Before, I was using lightDM, but a single tty is enough. +Before, I was using lightDM, but a single tty is enough.

    @@ -4039,7 +3059,7 @@ However, to make tools like Anydesk or Teamviewer to work: Add “type=x11” in /etc/pam.d/system-login:

    -
    -session optional pam_systemd.so type=x11
    +
      -session optional pam_systemd.so type=x11
     
    @@ -4050,136 +3070,66 @@ Add “type=x11” in /etc/pam.d/system-login:
    -
    -

    Theme manager

    -
    -

    -The idea would be to have a command that changes the theme of all the system. -

    - -

    -There would be at least one light and one dark theme. -It seems the color is due to this part of the script. Should then source this file somehow. -

    - -
    -
    BASE16_SHELL="$HOME/.base16-manager/chriskempson/base16-shell/"
    -[ -n "$PS1" ] && \
    -    [ -s "$BASE16_SHELL/profile_helper.sh" ] && \
    -        eval "$("$BASE16_SHELL/profile_helper.sh")"
    -
    +
    +

    gtk=/=qt - Managing Theme

    +
    - - - +
    +

    GTK Themes

    + - -
    -

    Base16

    -
    -

    -https://github.com/chriskempson/base16 -http://chriskempson.com/projects/base16/ -https://www.youtube.com/watch?v=QcOxU1sOOuw +Gtk2 themes are managed using the file ~/.gtkrc-2.0 while Gtk3 themes are managed using ~/.config/gtk-3.0/settings.ini.

    -
    -

    Base16 Philosophy

    -
    +
    +

    Gui Manager

    +

    -Define colors according to rules: http://chriskempson.com/projects/base16/ -Then we can use these colors multiple applications. -

    -
    -
    - -
    -

    Base16-shell

    -
    -

    -https://github.com/chriskempson/base16-shell +To customize the look of the system using GUI application, run lxappearance.

    -This changes the shell colors. This should be added to ~/.bashrc: +Installation:

    -
    # Base16 Shell
    -BASE16_SHELL="$HOME/.config/base16-shell/"
    -[ -n "$PS1" ] && \
    -    [ -s "$BASE16_SHELL/profile_helper.sh" ] && \
    -        eval "$("$BASE16_SHELL/profile_helper.sh")"
    +
      yay -S lxappearance
     
    -
    -

    Base16-manager

    -
    -

    -https://github.com/AuditeMarlow/base16-manager -

    - -

    -This help changes many applications colors at once. -

    -
    -
    -
    -
    - -
    -

    Streaming - OBS

    -
    +
    +

    Icons and themes

    +
    -
    yay -Ss obs-studio
    +
      yay -S zukitwo-themes faenza-icon-theme
     
    -

    -To share the screen as a webcam: -http://dlaw.me/webcam-spoofing-with-obs/ -

    -
    yay -S obs-v4l2sink
    -yay -S v4l2loopback-dkms-git
    -sudo modprobe v4l2loopback exclusive_caps=1 video_nr=9
    +
      yay -S arc-gtk-theme
     
    +
    -
    -

    Use Android phone as webcam - Droidcam

    -
    +
    +

    QT Themes

    +
    +

    +Run qt5ct to manage QT Themes. +

    +
    +
    +
    + +
    +

    droidcam - Use Android phone as webcam

    +
    -
    yay -S droidcam
    +
      yay -S droidcam
     
    @@ -4188,7 +3138,7 @@ Install and run droidcam on the Android phone. Once both are connected to the same network, run the following command:

    -
    droidcam-cli -v -size=1280x720 192.168.1.51 4747
    +
      droidcam-cli -v -size=1280x720 192.168.1.51 4747
     
    @@ -4200,75 +3150,113 @@ It will create a new video device accessible for all kinds of applications. To view the flux using mpv:

    -
    mpv av://v4l2:/dev/video0
    +
      mpv av://v4l2:/dev/video0
     
    -
    -

    Graphical Editor - Inskape

    -
    +
    +

    inkscape - Graphical Editor

    + -
    -
    -

    Remote Desktop - Anydesk

    -
    -
    yay -S anydesk-bin
    +
      yay -S inkscape
     
    -
    -

    Wireguard

    -
    +
    +

    kdenlive - Video Editor

    +
    +

    +kdenlive +

    +
    -
    yay -S wireguard-tools
    +
      yay -S kdenlive
     
    -
    -

    VPN Setup with NordVPN

    -
    +
    +

    kazam - Screen Recorder

    +
    +
    +

    obs-studio - Live streaming and screen recording

    +
    +

    +https://github.com/obsproject/obs-studio/ +

    + +
    +
      yay -Ss obs-studio
    +
    +
    + +

    +To share the screen as a webcam: +http://dlaw.me/webcam-spoofing-with-obs/ +

    +
    +
      yay -S obs-v4l2sink
    +  yay -S v4l2loopback-dkms-git
    +  sudo modprobe v4l2loopback exclusive_caps=1 video_nr=9
    +
    +
    +
    +
    + +
    +

    anydesk - Remote Desktop

    +
    +
    +
      yay -S anydesk-bin
    +
    +
    +
    +
    + +
    +

    wireguard - VPN

    +
    +
    +
      yay -S wireguard-tools
    +
    +
    +
    +
    + +
    +

    nordvpn - VPN

    + -
    -

    Installation

    -
    +

    +Installation: +

    -
    yay -S nordvpn-bin
    +
      yay -S nordvpn-bin
     
    -
    -
    -
    -

    Configuration

    -
    +

    +Configuration: +

    -
    sudo systemctl enable nordvpnd.service
    -sudo systemctl start nordvpnd.service
    +
      sudo systemctl enable --now nordvpnd.service
     
    -
    -
    -
    -

    Usage

    -
    @@ -4313,92 +3301,75 @@ To view the flux using mpv: -
    -

    Alternative: Use NordVPM with openVPN Instead

    - - -
    -

    Others

    -
    -
    -
    -

    Wallpaper: xwallpaper

    -
    - - -
    -

    Take Screenshot

    -
    +
    +

    maim=/=flameshot - Take Screenshots

    +
    -
    yay -S maim flameshot
    +
      yay -S maim flameshot
     
    -
    -

    Show pressed keys

    -
    +
    +

    screenkey - Show pressed keys

    +
    -
    yay -S screenkey
    +
      yay -S screenkey
     
    -
    -

    File transfer

    -
    +
    +

    croc - File transfer

    +

    https://github.com/schollz/croc

    -
    yay -S croc
    +
      yay -S croc
     
    -
    -

    Utilities

    -
    +
    +

    Find Files

    +
    +
    +
      yay -S fd ripgrep fzf
    +
    +
    +
    +
    + +
    +

    PDF/Image Utilities

    +
    -
    yay -S fd ripgrep pdf2svg pdftk unclutter pdfarranger
    +
     yay -S pdf2svg pdftk unclutter pdfarranger imagemagick
     
    -

    Trash

    @@ -4406,55 +3377,165 @@ To view the flux using mpv: trash-cli is used to manage the trash. It is integrated with Ranger.

    + +
    +
      yay -S trash-cli
    +
    +
    +

    Google translate from the command line

    +
    +
    +
      yay -S translate-shell
    +
    +
    + +
    +
      trans englishwork en:fr
    +
    +
    +
    +
    + +
    +

    Show information about the machine

    +
    +

    +neofetch +

    + +
    +
      yay -S neofetch
    +
    +
    +
    +
    +
    + +
    +

    Printer

    +
    +

    +https://wiki.archlinux.org/index.php/CUPS +Web based administration: http://localhost:631/ +

    + +

    +system-config-printer +

    + +

    +Check the queue +

    +
    +
      lpq
    +  lpq -a # on all queues
    +
    +
    + +

    +Clear the queue +

    +
    +
      lprm   # remove last entry only
    +  lprm - # remove all entries
    +
    +
    + +

    +Print a file +

    +
    +
      lpr -P printer_name filename.pdf
    +
    +
    + +

    +List available printers +

    +
    +
      lpstat -a
    +
    +
    + +

    +Stats about the printer +

    +
    +
      lpstat -p printer_name
    +
    +
    +
    +
    + +
    + + +++ ++ + + + + + + + + + + + + + + + + + + + + + + +
    CommandUsage
    mhwd-kernel -liDetermine which kernel is used
    sudo mhwd-kernel -i linux419Install new kernel
    sudo mhwd-kernel -i linux419 rmcInstall new kernel and remove old one
    +
    +
    + +
    +

    Format disks

    + +
    +

    Usefull commands

    - - -
    -

    Show informations about the machine

    -
    - -
    -
    - -
    -

    Work with PDF

    -
    -

    -pdftk -

    -
    -
    - -
    -

    Separate PDF

    -
    -

    -pdfseparate -f 1 -l 6 file.pdf split%d.pdf -Will create split1.pdf to split6.pdf files corresponding to correct pages of file.pdf. -

    -
    -
    -

    Readline

    @@ -4694,24 +3775,9 @@ Will create split1.pdf to split6.pdf files correspondi
    -
    -

    Google translate from the command line

    -
    -
    -
    yay -S translate-shell
    -
    -
    - -
    -
    trans englishwork en:fr
    -
    -
    -
    -
    - -
    -

    Others

    -
    +
    +

    Others

    +
    @@ -4726,16 +3792,6 @@ Will create split1.pdf to split6.pdf files correspondi - - - - - - - - - - @@ -4761,16 +3817,6 @@ Will create split1.pdf to split6.pdf files correspondi - - - - - - - - - - @@ -4791,16 +3837,6 @@ Will create split1.pdf to split6.pdf files correspondi - - - - - - - - - - @@ -4815,11 +3851,6 @@ Will create split1.pdf to split6.pdf files correspondi - - - - -
    Community-driven man pages
    transfer.shupload and share files from the command line
    ffsendshare files from the command line
    wttr.in weather in terminalMagnificent app which corrects your previous console command
    bash-sensibleAn attempt at saner Bash defaults
    awmanArch Wiki man pages - Arch wiki offline
    s-tui Terminal based CPU stress and monitoring utilitySee what takes place on the disk
    lightProgram to easily change brightness on backlight-controllers
    maimTake screenshots
    bat cat alternativesd sed alternative
    inxiCLI tool to get system information
    @@ -4832,12 +3863,6 @@ Will create split1.pdf to split6.pdf files correspondi - - -Command -Description - - meteo @@ -4854,11 +3879,6 @@ Will create split1.pdf to split6.pdf files correspondi Check all ip addresses on local netword - -rsync -a --progress source dest -Copy folders with stats - - du -sh folder Return the size of the folder @@ -4971,23 +3991,88 @@ Use apack and aunpack:
    -
    -

    Enable TRIM (SSD only)

    -
    +
    +

    After Install

    +
    +

    +Enable TRIM (SSD only) +

    -
    sudo systemctl enable --now fstrim.timer
    +
      sudo systemctl enable --now fstrim.timer
    +
    +
    + +

    +Set the fastest mirror for Pacman +

    +
    +
      sudo pacman-mirrors --fasttrack
     
    -
    -

    Set the fastest mirror for Pacman

    -
    +
    +

    Configuration for Laptops

    +
    +
    +
    +

    Power Management Tool: Powertop

    +
    +

    +https://wiki.archlinux.org/index.php/Powertop +https://wiki.manjaro.org/index.php?title=Power_Savings +

    + +

    +PowerTop a diagnostic tool used to identify and report issues with power consumption and management. +

    -
    sudo pacman-mirrors --fasttrack
    +
      yay -S powertop
     
    + + +

    +TLP is used for Power Management. +

    +
    +
      yay -S tlp
    +  sudo systemctl enable tlp
    +  sudo systemctl start tlp
    +  sudo systemctl enable tlp-sleep
    +  sudo systemctl start tlp-sleep
    +  sudo tlp start
    +
    +
    + +

    +Thermald is used to automatically handle CPU frequency scaling according to system load. +

    +
    +
      yay -S thermald
    +  sudo systemctl enable thermald
    +  sudo systemctl start thermald
    +
    +
    +
    +
    + +
    +

    Lid open/close

    +
    +

    +https://wiki.archlinux.org/index.php/Power_management +

    + +

    +Should automatic show lock screen +

    + +

    +/etc/systemd/logind.conf +

    +
    @@ -4999,9 +4084,9 @@ To improve the startup time.

    -
    sudo systemctl disable apparmor
    -sudo systemctl disable snapd
    -sudo systemctl disable systemd-backlight@backlight\:intel_backlight.service
    +
      sudo systemctl disable apparmor
    +  sudo systemctl disable snapd
    +  sudo systemctl disable systemd-backlight@backlight\:intel_backlight.service
     
    @@ -5009,15 +4094,15 @@ To improve the startup time. To see next timers

    -
    systemctl --user list-timers
    +
      systemctl --user list-timers
     
    -
    -

    Ressources

    -
    +
    +

    Ressources

    +

    Dotfiles

    @@ -5048,74 +4133,130 @@ To see next timers
    +

    List of all the install programs

    -
    -

    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 -

    -
    -
    - -
    -

    LaTeX

    -

    Mutt

    -

    -neomutt - Teaching an Old Dog New Tricks -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 -ripmime - Extract attachments out of MIME encoded email packages -shared-mime-info - Database of common MIME types -

    + + + +++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    neomuttTeaching an Old Dog New Tricks
    msmtpSMTP client that can be used as an SMTP plugin for Mutt
    isyncSynchronize a maildir with an IMAP server
    vdirsyncerSynchronize calendars and contacts
    urlviewURL extractor/launcher
    w3mPager/text based browser
    abookAddress book with mutt support
    elinksText mode web browser
    lbdbLittle brother’s database for the mutt mail reader
    muTool for searching e-mail messages stored in the maildir-format
    ripmimeExtract attachments out of MIME encoded email packages
    sharedmime-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 -

    + + + +++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    avrdudeAtmel AVR MCU programmer
    bootloadhidUSB boot loader for AVR microcontrollers
    dfuprogrammer - Device firmware update based USB programmer for Atmel chips
    platformioEcosystem for IoT development (Arduino and ARM mbed compatible)
    micropythonPython implementation for microcontrollers and constrained systems
    arduinomk - Makefile for Arduino sketches
    @@ -5141,11 +4282,6 @@ arduino-mk - Makefile for Arduino sketches 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 @@ -5203,28 +4339,72 @@ arduino-mk - Makefile for Arduino sketches

    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 -

    + + + +++ ++ + + + + + + + + + + + + + + + + + + + + + +
    wgetInternet file retriever
    htopImproved top (interactive process viewer)
    httpieUser-friendly cURL replacement (command-line HTTP client)
    curlGet a file from an HTTP, HTTPS or FTP server

    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 -

    + + + +++ ++ + + + + + + + + + + + + + + + + + + + + + +
    binutilsGNU Binary Utilities
    coreutilsGNU File, Shell, and Text utilities
    gnomedoc-utils - Documentation utilities for the GNOME project
    moreutilsCollection of tools that nobody wrote when UNIX was young
    @@ -5255,16 +4435,6 @@ moreutils - Collection of tools that nobody wrote when UNIX was young 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 @@ -5300,56 +4470,6 @@ moreutils - Collection of tools that nobody wrote when UNIX was young Text-to-HTML conversion tool - -musikcube -A cross-platform, terminal-based music player - - - -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 - - - -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 @@ -5362,7 +4482,7 @@ moreutils - Collection of tools that nobody wrote when UNIX was young

    Author: Dehaeze Thomas

    -

    Created: 2021-01-01 ven. 20:09

    +

    Created: 2021-01-03 dim. 22:25

    diff --git a/docs/music.html b/docs/music.html index 9e7ee0e..ce849c2 100644 --- a/docs/music.html +++ b/docs/music.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Music/Sound Configuration @@ -40,14 +40,14 @@

    pavucontrol - Volume Control

    -
    [window]
    -width=500
    -height=400
    -sinkInputType=1
    -sourceOutputType=1
    -sinkType=0
    -sourceType=1
    -showVolumeMeters=1
    +
      [window]
    +  width=500
    +  height=400
    +  sinkInputType=1
    +  sourceOutputType=1
    +  sinkType=0
    +  sourceType=1
    +  showVolumeMeters=1
     
    @@ -57,47 +57,47 @@

    mopidy - Music Server

    -
    [spotify]
    -username = dehaeze.thomas@gmail.com
    -password = <<get-password(passname="spotify.com/dehaeze.thomas@gmail.com")>>
    -client_id = 9dd02534-f038-46d8-946e-bfe72498204e
    -client_secret = <<get-password(passname="spotify/client_secret")>>
    -bitrate = 320
    +
      [spotify]
    +  username = dehaeze.thomas@gmail.com
    +  password = <<get-password(passname="spotify.com/dehaeze.thomas@gmail.com")>>
    +  client_id = 9dd02534-f038-46d8-946e-bfe72498204e
    +  client_secret = <<get-password(passname="spotify/client_secret")>>
    +  bitrate = 320
     
    -[mpd]
    -enabled = true
    -hostname = 127.0.0.1
    -port = 6600
    -password =
    -max_connections = 20
    -connection_timeout = 60
    -zeroconf = Mopidy MPD server on $hostname
    -command_blacklist = listall,listallinfo
    -default_playlist_scheme = m3u
    +  [mpd]
    +  enabled = true
    +  hostname = 127.0.0.1
    +  port = 6600
    +  password =
    +  max_connections = 20
    +  connection_timeout = 60
    +  zeroconf = Mopidy MPD server on $hostname
    +  command_blacklist = listall,listallinfo
    +  default_playlist_scheme = m3u
     
    -[jellyfin]
    -hostname = https://jellyfin.tdehaeze.xyz/
    -username = tdehaeze
    -password = <<get-password(passname="music.tdehaeze.xyz/tdehaeze")>>
    -libraries = Music
    -albumartistsort = True
    -album_format = {ProductionYear} - {Name}
    +  [jellyfin]
    +  hostname = https://jellyfin.tdehaeze.xyz/
    +  username = tdehaeze
    +  password = <<get-password(passname="music.tdehaeze.xyz/tdehaeze")>>
    +  libraries = Music
    +  albumartistsort = True
    +  album_format = {ProductionYear} - {Name}
     
    -[file]
    -enabled = true
    -media_dirs = /home/thomas/Music
    -excluded_file_extensions =
    -  .db
    -  .directory
    -  .html
    -  .jpeg
    -  .jpg
    -  .log
    -  .nfo
    -  .pdf
    -  .png
    -  .txt
    -  .zip
    +  [file]
    +  enabled = true
    +  media_dirs = /home/thomas/Music
    +  excluded_file_extensions =
    +    .db
    +    .directory
    +    .html
    +    .jpeg
    +    .jpg
    +    .log
    +    .nfo
    +    .pdf
    +    .png
    +    .txt
    +    .zip
     
    @@ -119,7 +119,7 @@ Cheatsheet: https://pkgbuild.com/ Configuration directory.

    -
    ncmpcpp_directory = ~/.config/ncmpcpp
    +
      ncmpcpp_directory = ~/.config/ncmpcpp
     
    @@ -127,9 +127,9 @@ Configuration directory. MPD Configuration.

    -
    mpd_host = localhost
    -mpd_port = 6600
    -mpd_music_dir = ~/Music
    +
      mpd_host = localhost
    +  mpd_port = 6600
    +  mpd_music_dir = ~/Music
     
    @@ -137,7 +137,7 @@ MPD Configuration. Notification of song change.

    -
    execute_on_song_change = dunstify --replace=19845 "Now Playing ♫" "$(mpc current)"
    +
      execute_on_song_change = dunstify --replace=19845 "Now Playing ♫" "$(mpc current)"
     
    @@ -145,11 +145,11 @@ Notification of song change. Better user interface

    -
    user_interface = "alternative"
    -playlist_editor_display_mode = "columns"
    -search_engine_display_mode = "columns"
    -browser_display_mode = "columns"
    -playlist_display_mode = "columns"
    +
      user_interface = "alternative"
    +  playlist_editor_display_mode = "columns"
    +  search_engine_display_mode = "columns"
    +  browser_display_mode = "columns"
    +  playlist_display_mode = "columns"
     
    @@ -157,13 +157,13 @@ Better user interface Sorting by tracking number and then title

    -
    browser_sort_mode = "format"
    -browser_sort_format = '{%n - %t}|{%t}'
    +
      browser_sort_mode = "format"
    +  browser_sort_format = '{%n - %t}|{%t}'
     
    -
    ask_before_clearing_playlists = "no"
    +
      ask_before_clearing_playlists = "no"
     
    @@ -173,42 +173,42 @@ Sorting by tracking number and then title

    Bindings

    -
    def_key "q"
    -  run_external_command "if [ $TMUX ]; then tmux detach; fi"
    -def_key "Q"
    -  quit
    -def_key "g"
    -  move_home
    -def_key "G"
    -  move_end
    -def_key "j"
    -  scroll_down
    -def_key "k"
    -  scroll_up
    -def_key "ctrl-u"
    -  page_up
    -def_key "ctrl-d"
    -  page_down
    -def_key "l"
    -  enter_directory
    -def_key "h"
    -  jump_to_parent_directory
    -def_key "."
    -  show_lyrics
    -def_key "n"
    -  next_found_item
    -def_key "N"
    -  previous_found_item
    -def_key "J"
    -  move_sort_order_down
    -def_key "K"
    -  move_sort_order_up
    -def_key "d"
    -  delete_playlist_items
    -def_key "+"
    -  volume_up
    -def_key "-"
    -  volume_down
    +
      def_key "q"
    +    run_external_command "sh -c 'if [ $TMUX ] ; then tmux detach; fi'"
    +  def_key "Q"
    +    quit
    +  def_key "g"
    +    move_home
    +  def_key "G"
    +    move_end
    +  def_key "j"
    +    scroll_down
    +  def_key "k"
    +    scroll_up
    +  def_key "ctrl-u"
    +    page_up
    +  def_key "ctrl-d"
    +    page_down
    +  def_key "l"
    +    enter_directory
    +  def_key "h"
    +    jump_to_parent_directory
    +  def_key "."
    +    show_lyrics
    +  def_key "n"
    +    next_found_item
    +  def_key "N"
    +    previous_found_item
    +  def_key "J"
    +    move_sort_order_down
    +  def_key "K"
    +    move_sort_order_up
    +  def_key "d"
    +    delete_playlist_items
    +  def_key "+"
    +    volume_up
    +  def_key "-"
    +    volume_down
     
     
    @@ -224,14 +224,14 @@ def_key "-"

    -
    directory: ~/Music
    -library: ~/Music/musiclibrary.db
    -art_filename: cover
    +
      directory: ~/Music
    +  library: ~/Music/musiclibrary.db
    +  art_filename: cover
     
    -import:
    -  move: yes
    +  import:
    +    move: yes
     
    -plugins: fromfilename discogs
    +  plugins: fromfilename discogs
     
    @@ -241,26 +241,26 @@ plugins: fromfilename discogs

    curseradio - Radio with curseradio

    -
    [opml]
    -root = http://opml.radiotime.com/
    +
      [opml]
    +  root = http://opml.radiotime.com/
     
    -[playback]
    -command = /usr/bin/mpv
    +  [playback]
    +  command = /usr/bin/mpv
     
    -[interface]
    -keymap = vi
    +  [interface]
    +  keymap = vi
     
    -[keymap.vi]
    -up = k
    -down = j
    -start = 0
    -end = $
    -pageup = u
    -pagedown = d
    -enter = l
    -stop = p
    -exit = q
    -favourite = f
    +  [keymap.vi]
    +  up = k
    +  down = j
    +  start = 0
    +  end = $
    +  pageup = u
    +  pagedown = d
    +  enter = l
    +  stop = p
    +  exit = q
    +  favourite = f
     
    @@ -268,7 +268,7 @@ plugins: fromfilename discogs

    Author: Dehaeze Thomas

    -

    Created: 2021-01-01 ven. 20:09

    +

    Created: 2021-01-03 dim. 22:25

    diff --git a/docs/notifications.html b/docs/notifications.html index 702373e..1bd9753 100644 --- a/docs/notifications.html +++ b/docs/notifications.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Dunst (Notification Manager) @@ -41,95 +41,96 @@

    Global

    -
    [global]
    +
      [global]
     
    +

    Display

    -
    # Which monitor should the notifications be displayed on.
    -monitor = 0
    +
      # Which monitor should the notifications be displayed on.
    +  monitor = 0
     
    -# Display notification on focused monitor.  Possible modes are:
    -#   mouse: follow mouse pointer
    -#   keyboard: follow window with keyboard focus
    -#   none: don't follow anything
    -#
    -# "keyboard" needs a windowmanager that exports the
    -# _NET_ACTIVE_WINDOW property.
    -# This should be the case for almost all modern windowmanagers.
    -#
    -# If this option is set to mouse or keyboard, the monitor option
    -# will be ignored.
    -follow = keyboard
    +  # Display notification on focused monitor.  Possible modes are:
    +  #   mouse: follow mouse pointer
    +  #   keyboard: follow window with keyboard focus
    +  #   none: don't follow anything
    +  #
    +  # "keyboard" needs a windowmanager that exports the
    +  # _NET_ACTIVE_WINDOW property.
    +  # This should be the case for almost all modern windowmanagers.
    +  #
    +  # If this option is set to mouse or keyboard, the monitor option
    +  # will be ignored.
    +  follow = keyboard
     
    -# The geometry of the window:
    -#   [{width}]x{height}[+/-{x}+/-{y}]
    -# The geometry of the message window.
    -# The height is measured in number of notifications everything else
    -# in pixels.  If the width is omitted but the height is given
    -# ("-geometry x2"), the message window expands over the whole screen
    -# (dmenu-like).  If width is 0, the window expands to the longest
    -# message displayed.  A positive x is measured from the left, a
    -# negative from the right side of the screen.  Y is measured from
    -# the top and down respectevly.
    -# The width can be negative.  In this case the actual width is the
    -# screen width minus the width defined in within the geometry option.
    -geometry = "250x50-10+37"
    +  # The geometry of the window:
    +  #   [{width}]x{height}[+/-{x}+/-{y}]
    +  # The geometry of the message window.
    +  # The height is measured in number of notifications everything else
    +  # in pixels.  If the width is omitted but the height is given
    +  # ("-geometry x2"), the message window expands over the whole screen
    +  # (dmenu-like).  If width is 0, the window expands to the longest
    +  # message displayed.  A positive x is measured from the left, a
    +  # negative from the right side of the screen.  Y is measured from
    +  # the top and down respectevly.
    +  # The width can be negative.  In this case the actual width is the
    +  # screen width minus the width defined in within the geometry option.
    +  geometry = "250x50-10+37"
     
    -# Show how many messages are currently hidden (because of geometry).
    -indicate_hidden = yes
    +  # Show how many messages are currently hidden (because of geometry).
    +  indicate_hidden = yes
     
    -# Shrink window if it's smaller than the width.  Will be ignored if
    -# width is 0.
    -shrink = no
    +  # Shrink window if it's smaller than the width.  Will be ignored if
    +  # width is 0.
    +  shrink = no
     
    -# The transparency of the window.  Range: [0; 100].
    -# This option will only work if a compositing windowmanager is
    -# present (e.g. xcompmgr, compiz, etc.).
    -transparency = 0
    +  # The transparency of the window.  Range: [0; 100].
    +  # This option will only work if a compositing windowmanager is
    +  # present (e.g. xcompmgr, compiz, etc.).
    +  transparency = 0
     
    -# The height of the entire notification.  If the height is smaller
    -# than the font height and padding combined, it will be raised
    -# to the font height and padding.
    -notification_height = 0
    +  # The height of the entire notification.  If the height is smaller
    +  # than the font height and padding combined, it will be raised
    +  # to the font height and padding.
    +  notification_height = 0
     
    -# Draw a line of "separator_height" pixel height between two
    -# notifications.
    -# Set to 0 to disable.
    -separator_height = 4
    +  # Draw a line of "separator_height" pixel height between two
    +  # notifications.
    +  # Set to 0 to disable.
    +  separator_height = 4
     
    -# Padding between text and separator.
    -padding = 16
    +  # Padding between text and separator.
    +  padding = 16
     
    -# Horizontal padding.
    -horizontal_padding = 16
    +  # Horizontal padding.
    +  horizontal_padding = 16
     
    -# Defines width in pixels of frame around the notification window.
    -# Set to 0 to disable.
    -frame_width = 2
    +  # Defines width in pixels of frame around the notification window.
    +  # Set to 0 to disable.
    +  frame_width = 2
     
    -# Defines color of the frame around the notification window.
    -frame_color = "#32302f"
    +  # Defines color of the frame around the notification window.
    +  frame_color = "#32302f"
     
    -# Define a color for the separator.
    -# possible values are:
    -#  * auto: dunst tries to find a color fitting to the background;
    -#  * foreground: use the same color as the foreground;
    -#  * frame: use the same color as the frame;
    -#  * anything else will be interpreted as a X color.
    -separator_color = frame
    +  # Define a color for the separator.
    +  # possible values are:
    +  #  * auto: dunst tries to find a color fitting to the background;
    +  #  * foreground: use the same color as the foreground;
    +  #  * frame: use the same color as the frame;
    +  #  * anything else will be interpreted as a X color.
    +  separator_color = frame
     
    -# Don't remove messages, if the user is idle (no mouse or keyboard input)
    -# for longer than idle_threshold seconds.
    -# Set to 0 to disable.
    -# default 120
    -idle_threshold = 120
    +  # Don't remove messages, if the user is idle (no mouse or keyboard input)
    +  # for longer than idle_threshold seconds.
    +  # Set to 0 to disable.
    +  # default 120
    +  idle_threshold = 120
     
    -# Sort messages by urgency.
    -sort = yes
    +  # Sort messages by urgency.
    +  sort = yes
     
    @@ -139,1822 +140,1822 @@

    Text

    -
    font = Hack Nerd Font 10
    -
    -# The height of a single line.  If the height is smaller than the
    -# font height, it will get raised to the font height.
    -# This adds empty space above and under the text.
    -line_height = 4
    -
    -# Possible values are:
    -# full: Allow a small subset of html markup in notifications:
    -#        <b>bold</b>
    -#        <i>italic</i>
    -#        <s>strikethrough</s>
    -#        <u>underline</u>
    -#
    -#        For a complete reference see
    -#        <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
    -#
    -# strip: This setting is provided for compatibility with some broken
    -#        clients that send markup even though it's not enabled on the
    -#        server. Dunst will try to strip the markup but the parsing is
    -#        simplistic so using this option outside of matching rules for
    -#        specific applications *IS GREATLY DISCOURAGED*.
    -#
    -# no:    Disable markup parsing, incoming notifications will be treated as
    -#        plain text. Dunst will not advertise that it has the body-markup
    -#        capability if this is set as a global setting.
    -#
    -# It's important to note that markup inside the format option will be parsed
    -# regardless of what this is set to.
    -markup = full
    -
    -# The format of the message.  Possible variables are:
    -#   %a  appname
    -#   %s  summary
    -#   %b  body
    -#   %i  iconname (including its path)
    -#   %I  iconname (without its path)
    -#   %p  progress value if set ([  0%] to [100%]) or nothing
    -#   %n  progress value if set without any extra characters
    -# Markup is allowed
    -format = "<b>%s</b>\n%b"
    -
    -# Alignment of message text.
    -# Possible values are "left", "center" and "right".
    -alignment = left
    -
    -# Show age of message if message is older than show_age_threshold
    -# seconds.
    -# Set to -1 to disable.
    -show_age_threshold = 300
    -
    -# Split notifications into multiple lines if they don't fit into
    -# geometry.
    -word_wrap = yes
    -
    -# Ignore newlines '\n' in notifications.
    -ignore_newline = no
    -
    -# Merge multiple notifications with the same content
    -stack_duplicates = false
    -
    -# Hide the count of merged notifications with the same content
    -hide_duplicate_count = false
    -
    -# Display indicators for URLs (U) and actions (A).
    -show_indicators = yes
    +
      font = Hack Nerd Font 10
    +
    +  # The height of a single line.  If the height is smaller than the
    +  # font height, it will get raised to the font height.
    +  # This adds empty space above and under the text.
    +  line_height = 4
    +
    +  # Possible values are:
    +  # full: Allow a small subset of html markup in notifications:
    +  #        <b>bold</b>
    +  #        <i>italic</i>
    +  #        <s>strikethrough</s>
    +  #        <u>underline</u>
    +  #
    +  #        For a complete reference see
    +  #        <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
    +  #
    +  # strip: This setting is provided for compatibility with some broken
    +  #        clients that send markup even though it's not enabled on the
    +  #        server. Dunst will try to strip the markup but the parsing is
    +  #        simplistic so using this option outside of matching rules for
    +  #        specific applications *IS GREATLY DISCOURAGED*.
    +  #
    +  # no:    Disable markup parsing, incoming notifications will be treated as
    +  #        plain text. Dunst will not advertise that it has the body-markup
    +  #        capability if this is set as a global setting.
    +  #
    +  # It's important to note that markup inside the format option will be parsed
    +  # regardless of what this is set to.
    +  markup = full
    +
    +  # The format of the message.  Possible variables are:
    +  #   %a  appname
    +  #   %s  summary
    +  #   %b  body
    +  #   %i  iconname (including its path)
    +  #   %I  iconname (without its path)
    +  #   %p  progress value if set ([  0%] to [100%]) or nothing
    +  #   %n  progress value if set without any extra characters
    +  # Markup is allowed
    +  format = "<b>%s</b>\n%b"
    +
    +  # Alignment of message text.
    +  # Possible values are "left", "center" and "right".
    +  alignment = left
    +
    +  # Show age of message if message is older than show_age_threshold
    +  # seconds.
    +  # Set to -1 to disable.
    +  show_age_threshold = 300
    +
    +  # Split notifications into multiple lines if they don't fit into
    +  # geometry.
    +  word_wrap = yes
    +
    +  # Ignore newlines '\n' in notifications.
    +  ignore_newline = no
    +
    +  # Merge multiple notifications with the same content
    +  stack_duplicates = false
    +
    +  # Hide the count of merged notifications with the same content
    +  hide_duplicate_count = false
    +
    +  # Display indicators for URLs (U) and actions (A).
    +  show_indicators = yes
     
    @@ -1964,14 +1965,14 @@ format = "<b>%s</b">"<b>%s</b>\n%b"

    Icons

    -
    # Align icons left/right/off
    -icon_position = off
    +
      # Align icons left/right/off
    +  icon_position = off
     
    -# Limit icons size.
    -max_icon_size=32
    +  # Limit icons size.
    +  max_icon_size=32
     
    -# Paths to default icons.
    -icon_path = /usr/share/icons/Arc/16x16/status/:/usr/share/icons/Arc/16x16/devices/
    +  # Paths to default icons.
    +  icon_path = /usr/share/icons/Arc/16x16/status/:/usr/share/icons/Arc/16x16/devices/
     
    @@ -1981,12 +1982,12 @@ format = "<b>%s</b">"<b>%s</b>\n%b"

    History

    -
    # Should a notification popped up from history be sticky or timeout
    -# as if it would normally do.
    -sticky_history = yes
    +
      # Should a notification popped up from history be sticky or timeout
    +  # as if it would normally do.
    +  sticky_history = yes
     
    -# Maximum amount of notifications kept in history
    -history_length = 20
    +  # Maximum amount of notifications kept in history
    +  history_length = 20
     
    @@ -1996,25 +1997,25 @@ format = "<b>%s</b">"<b>%s</b>\n%b"

    Misc/Advanced

    -
    # dmenu path.
    -dmenu = /usr/bin/dmenu -p dunst:
    +
      # dmenu path.
    +  dmenu = /usr/bin/dmenu -p dunst:
     
    -# Browser for opening urls in context menu.
    -browser = $BROWSER
    +  # Browser for opening urls in context menu.
    +  browser = $BROWSER
     
    -# Always run rule-defined scripts, even if the notification is suppressed
    -always_run_script = true
    +  # Always run rule-defined scripts, even if the notification is suppressed
    +  always_run_script = true
     
    -# Define the title of the windows spawned by dunst
    -title = Dunst
    +  # Define the title of the windows spawned by dunst
    +  title = Dunst
     
    -# Define the class of the windows spawned by dunst
    -class = Dunst
    +  # Define the class of the windows spawned by dunst
    +  class = Dunst
     
    -# Print a notification on startup.
    -# This is mainly for error detection, since dbus (re-)starts dunst
    -# automatically after a crash.
    -startup_notification = false
    +  # Print a notification on startup.
    +  # This is mainly for error detection, since dbus (re-)starts dunst
    +  # automatically after a crash.
    +  startup_notification = false
     
    @@ -2025,11 +2026,11 @@ format = "<b>%s</b">"<b>%s</b>\n%b"

    Shortcuts

    -
    [shortcuts]
    -# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
    -# "mod3" and "mod4" (windows-key).
    -close = mod1+space
    -history = mod1+Escape
    +
      [shortcuts]
    +  # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
    +  # "mod3" and "mod4" (windows-key).
    +  close = mod1+space
    +  history = mod1+Escape
     
    @@ -2039,20 +2040,20 @@ format = "<b>%s</b">"<b>%s</b>\n%b"

    Urgency

    -
    [urgency_low]
    -background = "#32302f"
    -foreground = "#ebdbb2"
    -timeout = 4
    +
      [urgency_low]
    +  background = "#32302f"
    +  foreground = "#ebdbb2"
    +  timeout = 4
     
    -[urgency_normal]
    -background = "#32302f"
    -foreground = "#ebdbb2"
    -timeout = 6
    +  [urgency_normal]
    +  background = "#32302f"
    +  foreground = "#ebdbb2"
    +  timeout = 6
     
    -[urgency_critical]
    -background = "#32302f"
    -foreground = "#cc241d"
    -timeout = 0
    +  [urgency_critical]
    +  background = "#32302f"
    +  foreground = "#cc241d"
    +  timeout = 0
     
    @@ -2060,7 +2061,7 @@ format = "<b>%s</b">"<b>%s</b>\n%b"

    Author: Dehaeze Thomas

    -

    Created: 2021-01-01 ven. 20:09

    +

    Created: 2021-01-03 dim. 22:51

    diff --git a/docs/pcmanfm.html b/docs/pcmanfm.html index dcb483a..07216c8 100644 --- a/docs/pcmanfm.html +++ b/docs/pcmanfm.html @@ -3,9 +3,9 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + -PCMANFM +PCManFM @@ -17,7 +17,7 @@ | HOME
    -

    PCMANFM

    +

    PCManFM

    Table of Contents

    @@ -33,8 +33,8 @@

    Config

    -
    [config]
    -bm_open_method=0
    +
      [config]
    +  bm_open_method=0
     
    @@ -44,10 +44,10 @@

    Volume

    -
    [volume]
    -mount_on_startup=0
    -mount_removable=0
    -autorun=0
    +
      [volume]
    +  mount_on_startup=0
    +  mount_removable=0
    +  autorun=0
     
    @@ -57,24 +57,24 @@

    UI

    -
    [ui]
    -always_show_tabs=0
    -max_tab_chars=32
    -win_width=1263
    -win_height=690
    -splitter_pos=150
    -media_in_new_tab=0
    -desktop_folder_new_win=0
    -change_tab_on_drop=1
    -close_on_unmount=1
    -focus_previous=0
    -side_pane_mode=places
    -view_mode=icon
    -show_hidden=0
    -sort=mtime;descending;
    -toolbar=newtab;navigation;home;
    -show_statusbar=1
    -pathbar_mode_buttons=0
    +
      [ui]
    +  always_show_tabs=0
    +  max_tab_chars=32
    +  win_width=1263
    +  win_height=690
    +  splitter_pos=150
    +  media_in_new_tab=0
    +  desktop_folder_new_win=0
    +  change_tab_on_drop=1
    +  close_on_unmount=1
    +  focus_previous=0
    +  side_pane_mode=places
    +  view_mode=icon
    +  show_hidden=0
    +  sort=mtime;descending;
    +  toolbar=newtab;navigation;home;
    +  show_statusbar=1
    +  pathbar_mode_buttons=0
     
    @@ -82,7 +82,7 @@

    Author: Dehaeze Thomas

    -

    Created: 2021-01-01 ven. 20:09

    +

    Created: 2021-01-03 dim. 22:51

    diff --git a/docs/qutebrowser.html b/docs/qutebrowser.html index c52b1d9..2f58101 100644 --- a/docs/qutebrowser.html +++ b/docs/qutebrowser.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Qutebrowser Configuration @@ -61,10 +61,10 @@

    Import

    -
    from qutebrowser.config.configfiles import ConfigAPI
    -from qutebrowser.config.config import ConfigContainer
    +
      from qutebrowser.config.configfiles import ConfigAPI
    +  from qutebrowser.config.config import ConfigContainer
     
    -import sys, os
    +  import sys, os
     
    @@ -74,10 +74,10 @@

    General config

    -
    c.aliases = {'w': 'session-save', 'q': 'quit', 'wq': 'quit --save'}
    -c.auto_save.session = False
    -c.backend = 'webengine'
    -c.confirm_quit = ['downloads']
    +
      c.aliases = {'w': 'session-save', 'q': 'quit', 'wq': 'quit --save'}
    +  c.auto_save.session = False
    +  c.backend = 'webengine'
    +  c.confirm_quit = ['downloads']
     
    @@ -87,13 +87,13 @@

    Content

    -
    c.content.autoplay = False
    -c.content.notifications = False
    -c.content.geolocation = 'ask'
    -c.content.javascript.alert = True
    -c.content.javascript.can_access_clipboard = True
    -c.content.pdfjs = False
    -c.content.proxy = 'system'
    +
      c.content.autoplay = False
    +  c.content.notifications = False
    +  c.content.geolocation = 'ask'
    +  c.content.javascript.alert = True
    +  c.content.javascript.can_access_clipboard = True
    +  c.content.pdfjs = False
    +  c.content.proxy = 'system'
     
    @@ -103,7 +103,7 @@

    Editor

    -
    c.editor.command = ['/usr/bin/termite', '--class="Floating"', '-e', 'nvim {}']
    +
      c.editor.command = ['/usr/bin/termite', '--class="Floating"', '-e', 'nvim {}']
     
    @@ -113,12 +113,12 @@

    Downloads

    -
    c.downloads.location.directory = '$HOME/Downloads/'
    -c.downloads.location.prompt = True
    -c.downloads.location.remember = True
    -c.downloads.location.suggestion = 'path'
    -c.downloads.position = 'bottom'
    -c.downloads.remove_finished = 10000
    +
      c.downloads.location.directory = '$HOME/Downloads/'
    +  c.downloads.location.prompt = True
    +  c.downloads.location.remember = True
    +  c.downloads.location.suggestion = 'path'
    +  c.downloads.position = 'bottom'
    +  c.downloads.remove_finished = 10000
     
    @@ -128,7 +128,7 @@

    Colors

    -
    # c.colors.webpage.darkmode.enabled = True
    +
      # c.colors.webpage.darkmode.enabled = True
     
    @@ -138,9 +138,9 @@

    Fonts

    -
    c.fonts.default_family = ["Hack Nerd Font Mono", "DejaVu Sans Mono", "Monaco"]
    -c.fonts.prompts = '10pt monospace'
    -c.fonts.statusbar = '10pt monospace'
    +
      c.fonts.default_family = ["Hack Nerd Font Mono", "DejaVu Sans Mono", "Monaco"]
    +  c.fonts.prompts = '10pt monospace'
    +  c.fonts.statusbar = '10pt monospace'
     
    @@ -150,10 +150,10 @@

    Input

    -
    c.input.insert_mode.auto_enter = True
    -c.input.insert_mode.auto_leave = True
    -c.input.insert_mode.auto_load = False
    -c.input.insert_mode.plugins = True
    +
      c.input.insert_mode.auto_enter = True
    +  c.input.insert_mode.auto_leave = True
    +  c.input.insert_mode.auto_load = False
    +  c.input.insert_mode.plugins = True
     
    @@ -163,8 +163,8 @@ c.input.insert_mode.plugins = New Instance Options
    -
    c.new_instance_open_target = 'tab'
    -c.new_instance_open_target_window = 'last-focused'
    +
      c.new_instance_open_target = 'tab'
    +  c.new_instance_open_target_window = 'last-focused'
     
    @@ -174,7 +174,7 @@ c.input.insert_mode.plugins = Spell Check
    -
    c.spellcheck.languages = ['en-US', 'fr-FR']
    +
      c.spellcheck.languages = ['en-US', 'fr-FR']
     
    @@ -184,19 +184,19 @@ c.input.insert_mode.plugins = Status Bar
    -
    # Hide the statusbar unless a message is shown.
    -c.statusbar.position = 'bottom'
    +
      # Hide the statusbar unless a message is shown.
    +  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', 'progress']
    +  # 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', 'progress']
     
    @@ -206,45 +206,45 @@ c.input.insert_mode.plugins = Tabs
    -
    # Open new tabs (middleclick/ctrl+click) in the background.
    -c.tabs.background = True
    +
      # 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'
    +  # Mouse button with which to close tabs.
    +  c.tabs.close_mouse_button = 'right'
     
    -# How to behave when the last tab is closed.
    -c.tabs.last_close = 'close'
    +  # How to behave when the last tab is closed.
    +  c.tabs.last_close = 'close'
     
    -# Switch between tabs using the mouse wheel.
    -c.tabs.mousewheel_switching = False
    +  # 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 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'
    +  # 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'
     
    -# Position of the tab bar.
    -c.tabs.position = 'left'
    +  # 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'
    +  # Which tab to select when the focused tab is removed.
    +  c.tabs.select_on_remove = 'next'
     
    -# Width (in pixels or as percentage of the window) of the tab bar if it's vertical.
    -c.tabs.width = 30
    +  # 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
    +  # Wrap when changing tabs.
    +  c.tabs.wrap = False
     
    @@ -254,31 +254,31 @@ c.input.insert_mode.plugins = Urls and Search Engines
    -
    c.url.searchengines = {
    -    'DEFAULT': 'https://www.duckduckgo.org/?q={}',
    -    'aw': 'https://wiki.archlinux.org/?search={}',
    -    'wi': 'https://en.wikipedia.org/wiki/Special:Search?search={}',
    -    'go': 'https://www.google.com/search?q={}',
    -    'gc': 'https://scholar.google.fr/scholar?hl=fr&as_sdt=0%2C5&q={}&btnG=',
    -    'gm': 'https://www.google.com/maps/search/{}/',
    -    'yt': 'https://www.youtube.com/results?search_query={}',
    -    'gh': 'https://github.com/search?q={}',
    -    're': '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={}',
    -    'am': 'https://www.amazon.fr/s?k={}',
    -    'md': 'https://fr.mathworks.com/help/search.html?qdoc={}&submitsearch=',
    -    'js': 'https://developer.mozilla.org/en-US/search?q={}',
    -    'tf': 'https://translate.google.com/#view=home&op=translate&sl=en&tl=fr&text={}',
    -    'te': 'https://translate.google.com/#view=home&op=translate&sl=fr&tl=en&text={}',
    -}
    +
      c.url.searchengines = {
    +      'DEFAULT': 'https://www.duckduckgo.org/?q={}',
    +      'aw': 'https://wiki.archlinux.org/?search={}',
    +      'wi': 'https://en.wikipedia.org/wiki/Special:Search?search={}',
    +      'go': 'https://www.google.com/search?q={}',
    +      'gc': 'https://scholar.google.fr/scholar?hl=fr&as_sdt=0%2C5&q={}&btnG=',
    +      'gm': 'https://www.google.com/maps/search/{}/',
    +      'yt': 'https://www.youtube.com/results?search_query={}',
    +      'gh': 'https://github.com/search?q={}',
    +      're': '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={}',
    +      'am': 'https://www.amazon.fr/s?k={}',
    +      'md': 'https://fr.mathworks.com/help/search.html?qdoc={}&submitsearch=',
    +      'js': 'https://developer.mozilla.org/en-US/search?q={}',
    +      'tf': 'https://translate.google.com/#view=home&op=translate&sl=en&tl=fr&text={}',
    +      'te': 'https://translate.google.com/#view=home&op=translate&sl=fr&tl=en&text={}',
    +  }
     
    -
    c.url.start_pages = ['https://homer.tdehaeze.xyz/']
    -c.url.default_page = 'https://homer.tdehaeze.xyz/'
    +
      c.url.start_pages = ['https://homer.tdehaeze.xyz/']
    +  c.url.default_page = 'https://homer.tdehaeze.xyz/'
     
    @@ -291,9 +291,9 @@ c.input.insert_mode.plugins = -
    config.bind('+', 'zoom-in')
    -config.bind('-', 'zoom-out')
    -config.bind('=', 'zoom')
    +
      config.bind('+', 'zoom-in')
    +  config.bind('-', 'zoom-out')
    +  config.bind('=', 'zoom')
     
    @@ -301,8 +301,8 @@ config.bind('=', 'zoom' Inputs blocks

    -
    config.bind(';t', 'hint inputs')
    -config.bind('gi', 'hint inputs --first')
    +
      config.bind(';t', 'hint inputs')
    +  config.bind('gi', 'hint inputs --first')
     
    @@ -310,7 +310,7 @@ config.bind('gi', 'hint Opening New Window

    -
    config.bind('<Ctrl-N>', 'open -w')
    +
      config.bind('<Ctrl-N>', 'open -w')
     
    @@ -318,8 +318,8 @@ Opening New Window History

    -
    config.bind('H', 'back')
    -config.bind('L', 'forward')
    +
      config.bind('H', 'back')
    +  config.bind('L', 'forward')
     
    @@ -327,12 +327,12 @@ config.bind('L', 'forwa Move tabs around

    -
    config.bind('d', 'tab-close')
    -config.bind('<', 'tab-move -')
    -config.bind('>', 'tab-move +')
    -config.bind('gO', 'tab-give') # Open current tab in a new window
    -config.bind('J', 'tab-next')
    -config.bind('K', 'tab-prev')
    +
      config.bind('d', 'tab-close')
    +  config.bind('<', 'tab-move -')
    +  config.bind('>', 'tab-move +')
    +  config.bind('gO', 'tab-give') # Open current tab in a new window
    +  config.bind('J', 'tab-next')
    +  config.bind('K', 'tab-prev')
     
    @@ -340,8 +340,8 @@ config.bind('K', 'tab-p Bookmarks and Quickmark

    -
    config.bind('M', 'bookmark-add')
    -config.bind('m', 'quickmark-save')
    +
      config.bind('M', 'bookmark-add')
    +  config.bind('m', 'quickmark-save')
     
    @@ -349,8 +349,8 @@ config.bind('m', 'quick Open New Pages/Tabs

    -
    config.bind('o', 'set-cmd-text -s :open')
    -config.bind('O', 'set-cmd-text -s :open -t')
    +
      config.bind('o', 'set-cmd-text -s :open')
    +  config.bind('O', 'set-cmd-text -s :open -t')
     
    @@ -358,8 +358,8 @@ config.bind('O', 'set-c Open new page/tab with clipboard content

    -
    config.bind('pp', 'open -- {clipboard}')
    -config.bind('pP', 'open -t -- {clipboard}')
    +
      config.bind('pp', 'open -- {clipboard}')
    +  config.bind('pP', 'open -t -- {clipboard}')
     
    @@ -367,8 +367,8 @@ config.bind('pP', 'open Link Hinting

    -
    config.bind('f', 'hint')
    -config.bind('F', 'hint all tab')
    +
      config.bind('f', 'hint')
    +  config.bind('F', 'hint all tab')
     
    @@ -376,7 +376,7 @@ config.bind('F', 'hint Yanking url

    -
    config.bind('yy', 'yank')
    +
      config.bind('yy', 'yank')
     
    @@ -384,15 +384,15 @@ Yanking url Go to specific websites

    -
    config.bind('gy', 'open -t https://www.youtube.com/feed/subscriptions')
    -config.bind('gf', 'open -t https://rss.tdehaeze.xyz/')
    -config.bind('gr', 'open -t https://www.reddit.com/')
    +
      config.bind('gy', 'open -t https://www.youtube.com/feed/subscriptions')
    +  config.bind('gf', 'open -t https://rss.tdehaeze.xyz/')
    +  config.bind('gr', 'open -t https://www.reddit.com/')
     
    -config.bind('gh', 'open -t https://homer.tdehaeze.xyz/')
    +  config.bind('gh', 'open -t https://homer.tdehaeze.xyz/')
     
    -config.bind('gb', 'open -t qute://bookmarks')
    -config.bind('gH', 'open -t qute://history')
    -config.bind('gs', 'open -t qute://settings')
    +  config.bind('gb', 'open -t qute://bookmarks')
    +  config.bind('gH', 'open -t qute://history')
    +  config.bind('gs', 'open -t qute://settings')
     
    @@ -405,7 +405,7 @@ config.bind('gs', 'open Create a Password for the current website

    -
    config.bind(',P', 'spawn --userscript ~/.config/qutebrowser/userscripts/add-passowrd.sh')
    +
      config.bind(',P', 'spawn --userscript ~/.config/qutebrowser/userscripts/add-passowrd.sh')
     
    @@ -413,7 +413,7 @@ Create a Password for the current website Use Pass to fill password and username (configuration is done in ~/.config/qutebrowser/password_fill_rc)

    -
    config.bind(',p', 'spawn --userscript password_fill')
    +
      config.bind(',p', 'spawn --userscript password_fill')
     
    @@ -421,8 +421,8 @@ Use Pass to fill password and username (configuration is done in ~/.config Open Youtube video using mpv

    -
    config.bind(',m', 'spawn --detach mpv --force-window yes {url}')
    -config.bind(',M', 'hint links spawn --detach mpv --force-window yes {hint-url}')
    +
      config.bind(',m', 'spawn --detach mpv --force-window yes {url}')
    +  config.bind(',M', 'hint links spawn --detach mpv --force-window yes {hint-url}')
     
    @@ -430,8 +430,8 @@ config.bind(',M', 'hint Download Youtube video / entire playlist

    -
    config.bind(',v', 'spawn --userscript ~/.config/qutebrowser/userscripts/yt-download.sh {url}')
    -config.bind(',V', 'hint links spawn --userscript ~/.config/qutebrowser/userscripts/yt-download.sh {hint-url}')
    +
      config.bind(',v', 'spawn --userscript ~/.config/qutebrowser/userscripts/yt-download.sh {url}')
    +  config.bind(',V', 'hint links spawn --userscript ~/.config/qutebrowser/userscripts/yt-download.sh {hint-url}')
     
    @@ -439,8 +439,8 @@ config.bind(',V', 'hint Add page to Bookmarks using buku

    -
    config.bind(',b', 'spawn --userscript ~/.config/qutebrowser/userscripts/buku-add.sh')
    -config.bind(',B', 'spawn --userscript ~/.config/qutebrowser/userscripts/buku-rofi.sh')
    +
      config.bind(',b', 'spawn --userscript ~/.config/qutebrowser/userscripts/buku-add.sh')
    +  config.bind(',B', 'spawn --userscript ~/.config/qutebrowser/userscripts/buku-rofi.sh')
     
    @@ -448,8 +448,8 @@ config.bind(',B', 'spaw Download with aria2c

    -
    config.bind(',d', 'hint links spawn --userscript ~/.config/qutebrowser/userscripts/aria2c-add.sh {hint-url}')
    -config.bind(',D', 'hint links spawn --userscript ~/.config/qutebrowser/userscripts/aria2c-add-homelab.sh {hint-url}')
    +
      config.bind(',d', 'hint links spawn --userscript ~/.config/qutebrowser/userscripts/aria2c-add.sh {hint-url}')
    +  config.bind(',D', 'hint links spawn --userscript ~/.config/qutebrowser/userscripts/aria2c-add-homelab.sh {hint-url}')
     
    @@ -457,7 +457,7 @@ config.bind(',D', 'hint Open bookmark using buku

    -
    config.bind(',o', 'spawn ~/.local/bin/bukurun')
    +
      config.bind(',o', 'spawn ~/.local/bin/bukurun')
     
    @@ -465,8 +465,8 @@ Open bookmark using buku Org Capture

    -
    config.bind(',r', 'spawn --userscript ~/.config/qutebrowser/userscripts/org-capture.sh')
    -config.bind(',R', 'hint links userscript ~/.config/qutebrowser/userscripts/org-capture.sh')
    +
      config.bind(',r', 'spawn --userscript ~/.config/qutebrowser/userscripts/org-capture.sh')
    +  config.bind(',R', 'hint links userscript ~/.config/qutebrowser/userscripts/org-capture.sh')
     
    @@ -474,8 +474,8 @@ config.bind(',R', 'hint Screenshot of webpage to png

    -
    config.bind(',s', 'spawn --userscript ~/.config/qutebrowser/userscripts/html-to-pdf.sh')
    -config.bind(',S', 'spawn --userscript ~/.config/qutebrowser/userscripts/html-to-png.sh')
    +
      config.bind(',s', 'spawn --userscript ~/.config/qutebrowser/userscripts/html-to-pdf.sh')
    +  config.bind(',S', 'spawn --userscript ~/.config/qutebrowser/userscripts/html-to-png.sh')
     
    @@ -483,7 +483,7 @@ config.bind(',S', 'spaw Download AES video

    -
    config.bind(',E', 'spawn --userscript ~/.config/qutebrowser/userscripts/aes-download.sh')
    +
      config.bind(',E', 'spawn --userscript ~/.config/qutebrowser/userscripts/aes-download.sh')
     
    @@ -491,7 +491,7 @@ Download AES video Download a torrent

    -
    config.bind(',t', 'hint links spawn torrent-add {hint-url}')
    +
      config.bind(',t', 'hint links spawn torrent-add {hint-url}')
     
    @@ -499,7 +499,7 @@ Download a torrent Annotate with Hypothesis

    -
    config.bind(',a', "jseval javascript:(function(){window.hypothesisConfig=function(){return{showHighlights:true,appType:'bookmarklet'};};var d=document,s=d.createElement('script');s.setAttribute('src','https://hypothes.is/embed.js');d.body.appendChild(s)})();")
    +
      config.bind(',a', "jseval javascript:(function(){window.hypothesisConfig=function(){return{showHighlights:true,appType:'bookmarklet'};};var d=document,s=d.createElement('script');s.setAttribute('src','https://hypothes.is/embed.js');d.body.appendChild(s)})();")
     
    @@ -507,7 +507,7 @@ Annotate with Hypothesis See Amazon price history using CamelCamelCamel

    -
    config.bind(',A', ":open -t https://fr.camelcamelcamel.com/search?sq={url}")
    +
      config.bind(',A', ":open -t https://fr.camelcamelcamel.com/search?sq={url}")
     
    @@ -515,7 +515,7 @@ See Amazon price history using CamelCamelCamel Org Roam Entry for the current page

    -
    config.bind(',R', "open javascript:void(location.href='org-protocol://roam-ref?template=r&ref='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title))")
    +
      config.bind(',R', "open javascript:void(location.href='org-protocol://roam-ref?template=r&ref='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title))")
     
    @@ -530,18 +530,18 @@ Org Roam Entry for the current page

    Create a new password

    -
    url=$(echo "$QUTE_URL" | awk -F[/:] '{print $4}' | rofi -p "URL" -dmenu -lines 1)
    -username=$(echo -e "dehaeze.thomas@gmail.com\nthomas.dehaeze@esrf.fr\ntdehaeze" | rofi -p "Username" -dmenu -lines 5)
    -password=$(rofi -p "Password" -dmenu -password -lines 1)
    +
      url=$(echo "$QUTE_URL" | awk -F[/:] '{print $4}' | rofi -p "URL" -dmenu -lines 1)
    +  username=$(echo -e "dehaeze.thomas@gmail.com\nthomas.dehaeze@esrf.fr\ntdehaeze" | rofi -p "Username" -dmenu -lines 5)
    +  password=$(rofi -p "Password" -dmenu -password -lines 1)
     
    -if [ -z "$url" ] || [ -z "$username" ] || [ -z "$password" ]; then
    -    dunstify --urgency=critical "Pass" "Failed to Add Password"
    -else
    -    echo -e "$password\nlogin: $username\nurl: $QUTE_URL" > /tmp/add-password.txt
    -    pass insert --multiline "$url/$username" < /tmp/add-password.txt;
    -    rm /tmp/add-password.txt
    -    dunstify "Pass " "Password Added"
    -fi
    +  if [ -z "$url" ] || [ -z "$username" ] || [ -z "$password" ]; then
    +      dunstify --urgency=critical "Pass" "Failed to Add Password"
    +  else
    +      echo -e "$password\nlogin: $username\nurl: $QUTE_URL" > /tmp/add-password.txt
    +      pass insert --multiline "$url/$username" < /tmp/add-password.txt;
    +      rm /tmp/add-password.txt
    +      dunstify "Pass " "Password Added"
    +  fi
     
    @@ -551,23 +551,23 @@ Org Roam Entry for the current page

    Download Youtube Video

    -
    cd ~/Documents/to-watch/ || exit;
    +
      cd ~/Documents/to-watch/ || exit;
     
    -if [[ "$1" == *"list"* ]]; then
    -    choice=$(echo -e "Video\nPlaylist" | rofi -dmenu -only-match -i)
    -fi
    +  if [[ "$1" == *"list"* ]]; then
    +      choice=$(echo -e "Video\nPlaylist" | rofi -dmenu -only-match -i)
    +  fi
     
    -if [ -n "$choice" ] && [ "$choice" = "Playlist" ]; then
    -    dunstify --replace=19243 "Youtube " "Downloading Playlist...";
    -    youtube-dl -i -f 'bestvideo[height<=720]+bestaudio/best[height<=720]' "$1" -o "%(playlist_title)s/%(playlist_index)s-%(title)s.%(ext)s" && \
    -        dunstify --replace=19243 "Youtube " "Downloaded" || \
    -        dunstify --replace=19243 --urgency=critical "Youtube " "Failed to download"
    -else
    -    dunstify --replace=19243 "Youtube " "Downloading Video...";
    -    youtube-dl --no-playlist -f 'bestvideo[height<=720]+bestaudio/best[height<=720]' "$1" && \
    -        dunstify --replace=19243 "Youtube " "Downloaded" || \
    -        dunstify --replace=19243 --urgency=critical "Youtube " "Failed to download"
    -fi
    +  if [ -n "$choice" ] && [ "$choice" = "Playlist" ]; then
    +      dunstify --replace=19243 "Youtube " "Downloading Playlist...";
    +      youtube-dl -i -f 'bestvideo[height<=720]+bestaudio/best[height<=720]' "$1" -o "%(playlist_title)s/%(playlist_index)s-%(title)s.%(ext)s" && \
    +          dunstify --replace=19243 "Youtube " "Downloaded" || \
    +          dunstify --replace=19243 --urgency=critical "Youtube " "Failed to download"
    +  else
    +      dunstify --replace=19243 "Youtube " "Downloading Video...";
    +      youtube-dl --no-playlist -f 'bestvideo[height<=720]+bestaudio/best[height<=720]' "$1" && \
    +          dunstify --replace=19243 "Youtube " "Downloaded" || \
    +          dunstify --replace=19243 --urgency=critical "Youtube " "Failed to download"
    +  fi
     
    @@ -577,25 +577,25 @@ Org Roam Entry for the current page

    Password_fill_rc

    -
    # Show all password fields in the menu
    -query_entries() {
    -    # safe queried url for choose_entry
    -    # the subdomains are removed
    -    export queried_url=$(expr match ".$1" '.*\.\(.*\..*\)')
    -    mapfile -t files < <(find -L "$PREFIX" -iname '*.gpg' -printf '%P\n' |sed 's,\.gpg$,,')
    -}
    +
      # Show all password fields in the menu
    +  query_entries() {
    +      # safe queried url for choose_entry
    +      # the subdomains are removed
    +      export queried_url=$(expr match ".$1" '.*\.\(.*\..*\)')
    +      mapfile -t files < <(find -L "$PREFIX" -iname '*.gpg' -printf '%P\n' |sed 's,\.gpg$,,')
    +  }
     
    -# Even if there is only one entry, always show a menu
    -# for user confirmation.
    -choose_entry() {
    -    MENU_COMMAND=(
    -        rofi -dmenu
    -            -p "qutebrowser> "
    -            -filter "$queried_url"
    -            -mesg $'Pick a password entry for <b>'"${QUTE_URL//&/&amp;}"'</b>'
    -    )
    -    file=$( printf "%s\n" "${files[@]}" | "${MENU_COMMAND[@]}" )
    -}
    +  # Even if there is only one entry, always show a menu
    +  # for user confirmation.
    +  choose_entry() {
    +      MENU_COMMAND=(
    +          rofi -dmenu
    +              -p "qutebrowser> "
    +              -filter "$queried_url"
    +              -mesg $'Pick a password entry for <b>'"${QUTE_URL//&/&amp;}"'</b>'
    +      )
    +      file=$( printf "%s\n" "${files[@]}" | "${MENU_COMMAND[@]}" )
    +  }
     
    @@ -605,18 +605,18 @@ Org Roam Entry for the current page

    Org-Capture

    -
    readonly CAPTURE_SCRIPT=~/.config/qutebrowser/userscripts/org-protocol-capture-html.sh
    +
      readonly CAPTURE_SCRIPT=~/.config/qutebrowser/userscripts/org-protocol-capture-html.sh
     
    -if [[ "$QUTE_MODE" = "hints" ]]; then
    -    # if we start with hints, we juste want to capture the URL
    -    $CAPTURE_SCRIPT --template "pu" --url "${QUTE_URL}"
    -elif [[ -n "$QUTE_SELECTED_TEXT" ]]; then
    -    # if text is selected, we want to capture the text
    -    $CAPTURE_SCRIPT --template "pt" --heading "${QUTE_TITLE}" --url "${QUTE_URL}" "${QUTE_SELECTED_TEXT}"
    -else
    -    # if no text is selected, we want to capture the url
    -    $CAPTURE_SCRIPT --template "pu" --heading "${QUTE_TITLE}" --url "${QUTE_URL}"
    -fi
    +  if [[ "$QUTE_MODE" = "hints" ]]; then
    +      # if we start with hints, we juste want to capture the URL
    +      $CAPTURE_SCRIPT --template "pu" --url "${QUTE_URL}"
    +  elif [[ -n "$QUTE_SELECTED_TEXT" ]]; then
    +      # if text is selected, we want to capture the text
    +      $CAPTURE_SCRIPT --template "pt" --heading "${QUTE_TITLE}" --url "${QUTE_URL}" "${QUTE_SELECTED_TEXT}"
    +  else
    +      # if no text is selected, we want to capture the url
    +      $CAPTURE_SCRIPT --template "pu" --heading "${QUTE_TITLE}" --url "${QUTE_URL}"
    +  fi
     
    @@ -629,9 +629,9 @@ Org Roam Entry for the current page Defaults

    -
    heading="link"
    -template="pu"
    -url="https://google.com/"
    +
      heading="link"
    +  template="pu"
    +  url="https://google.com/"
     
    @@ -639,33 +639,33 @@ Defaults Functions

    -
    function debug {
    -    if [[ -n $debug ]]
    -    then
    -        function debug {
    -            echo "DEBUG: $@" >&2
    -        }
    -        debug "$@"
    -    else
    -        function debug {
    -            true
    -        }
    -    fi
    -}
    -function die {
    -    echo "$@" >&2
    -    exit 1
    -}
    -function urlencode {
    -    python -c "
    -from __future__ import print_function
    -try:
    -    from urllib import quote  # Python 2
    -except ImportError:
    -    from urllib.parse import quote  # Python 3
    -import sys
    -print(quote(sys.stdin.read()[:-1], safe=''))"
    -}
    +
      function debug {
    +      if [[ -n $debug ]]
    +      then
    +          function debug {
    +              echo "DEBUG: $@" >&2
    +          }
    +          debug "$@"
    +      else
    +          function debug {
    +              true
    +          }
    +      fi
    +  }
    +  function die {
    +      echo "$@" >&2
    +      exit 1
    +  }
    +  function urlencode {
    +      python -c "
    +  from __future__ import print_function
    +  try:
    +      from urllib import quote  # Python 2
    +  except ImportError:
    +      from urllib.parse import quote  # Python 3
    +  import sys
    +  print(quote(sys.stdin.read()[:-1], safe=''))"
    +  }
     
    @@ -673,22 +673,22 @@ Functions Documentation

    -
    function usage {
    -    cat <<EOF
    -$0 [OPTIONS] [HTML]
    -html | $0 [OPTIONS]
    -Send HTML to Emacs through org-protocol, passing it through Pandoc to
    -convert HTML to Org-mode.  HTML may be passed as an argument or
    -through STDIN.  If only URL is given, it will be downloaded and its
    -contents used.
    -Options:
    -    -h, --heading HEADING     Heading
    -    -t, --template TEMPLATE   org-capture template key (default: pu)
    -    -u, --url URL             URL
    -    --debug  Print debug info
    -    --help   I need somebody!
    -EOF
    -}
    +
      function usage {
    +      cat <<EOF
    +  $0 [OPTIONS] [HTML]
    +  html | $0 [OPTIONS]
    +  Send HTML to Emacs through org-protocol, passing it through Pandoc to
    +  convert HTML to Org-mode.  HTML may be passed as an argument or
    +  through STDIN.  If only URL is given, it will be downloaded and its
    +  contents used.
    +  Options:
    +      -h, --heading HEADING     Heading
    +      -t, --template TEMPLATE   org-capture template key (default: pu)
    +      -u, --url URL             URL
    +      --debug  Print debug info
    +      --help   I need somebody!
    +  EOF
    +  }
     
    @@ -696,46 +696,46 @@ Documentation Arguments

    -
    args=$(getopt -n "$0" -o dh:rt:u: -l debug,help,heading:,template:,url: -- "$@") \
    -    || die "Unable to parse args.  Is getopt installed?"
    -eval set -- "$args"
    +
      args=$(getopt -n "$0" -o dh:rt:u: -l debug,help,heading:,template:,url: -- "$@") \
    +      || die "Unable to parse args.  Is getopt installed?"
    +  eval set -- "$args"
     
    -while true
    -do
    -    case "$1" in
    -        -d|--debug)
    -            debug=true
    -            debug "Debugging on"
    -            ;;
    -        --help)
    -            usage
    -            exit
    -            ;;
    -        -h|--heading)
    -            shift
    -            heading="$1"
    -            ;;
    -        -t|--template)
    -            shift
    -            template="$1"
    -            ;;
    -        -u|--url)
    -            shift
    -            url="$1"
    -            ;;
    -        --)
    -            # Remaining args
    -            shift
    -            rest=("$@")
    -            break
    -            ;;
    -    esac
    +  while true
    +  do
    +      case "$1" in
    +          -d|--debug)
    +              debug=true
    +              debug "Debugging on"
    +              ;;
    +          --help)
    +              usage
    +              exit
    +              ;;
    +          -h|--heading)
    +              shift
    +              heading="$1"
    +              ;;
    +          -t|--template)
    +              shift
    +              template="$1"
    +              ;;
    +          -u|--url)
    +              shift
    +              url="$1"
    +              ;;
    +          --)
    +              # Remaining args
    +              shift
    +              rest=("$@")
    +              break
    +              ;;
    +      esac
     
    -    shift
    -done
    +      shift
    +  done
     
    -debug "ARGS: $args"
    -debug "Remaining args: ${rest[@]}"
    +  debug "ARGS: $args"
    +  debug "Remaining args: ${rest[@]}"
     
    @@ -743,12 +743,12 @@ debug "Remaining args: Get HTML

    -
    if [[ -n $@ ]]
    -then
    -    debug "Text from args"
    +
      if [[ -n $@ ]]
    +  then
    +      debug "Text from args"
     
    -    body="$@"
    -fi
    +      body="$@"
    +  fi
     
    @@ -756,9 +756,9 @@ Get HTML URL-encode

    -
    heading=$(urlencode <<<"$heading") || die "Unable to urlencode heading."
    -url=$(urlencode <<<"$url") || die "Unable to urlencode URL."
    -body=$(urlencode <<<"$body") || die "Unable to urlencode text."
    +
      heading=$(urlencode <<<"$heading") || die "Unable to urlencode heading."
    +  url=$(urlencode <<<"$url") || die "Unable to urlencode URL."
    +  body=$(urlencode <<<"$body") || die "Unable to urlencode text."
     
    @@ -766,7 +766,7 @@ URL-encode Send to Emacs

    -
    emacsclient "org-protocol://capture?template=$template&url=$url&title=$heading&body=$body"
    +
      emacsclient "org-protocol://capture?template=$template&url=$url&title=$heading&body=$body"
     
    @@ -776,12 +776,12 @@ Send to Emacs

    Add Url to Buku using Rofi

    -
    title=$(echo "$QUTE_TITLE" | rofi -p "Title" -dmenu -lines 1)
    -tags=$(buku -t --nc --np | sed -e 's/\s*[[:digit:]]*\.\s*\(.*\)\s*([[:digit:]]*)\s*/\1/' -e '/^\s*$/d' | sort | uniq | rofi -multi-select -p "Tags" -dmenu | tr "\n" "," | sed 's/\s*,\s*$//')
    +
      title=$(echo "$QUTE_TITLE" | rofi -p "Title" -dmenu -lines 1)
    +  tags=$(buku -t --nc --np | sed -e 's/\s*[[:digit:]]*\.\s*\(.*\)\s*([[:digit:]]*)\s*/\1/' -e '/^\s*$/d' | sort | uniq | rofi -multi-select -p "Tags" -dmenu | tr "\n" "," | sed 's/\s*,\s*$//')
     
    -buku --add "$QUTE_URL" --tag "$tags" --title "$title" && \
    -    dunstify "Buku" "Bookmark Added" || \
    -    dunstify --urgency=critical "Buku" " Bookmark Added"
    +  buku --add "$QUTE_URL" --tag "$tags" --title "$title" && \
    +      dunstify "Buku" "Bookmark Added" || \
    +      dunstify --urgency=critical "Buku" " Bookmark Added"
     
    @@ -791,8 +791,8 @@ buku --add "Add Url to Buku without asking for information
    -
    buku --add $QUTE_URL --title "$QUTE_TITLE" && \
    -  dunstify "Buku" "📑 Bookmark Added"
    +
      buku --add $QUTE_URL --title "$QUTE_TITLE" && \
    +    dunstify "Buku" "📑 Bookmark Added"
     
    @@ -802,9 +802,9 @@ buku --add "Download with aria2c
    -
    aria2p add "$1" && \
    -  dunstify "Aria2" "Download Started" || \
    -  dunstify "Aria2" "Error"
    +
      aria2p add "$1" && \
    +    dunstify "Aria2" "Download Started" || \
    +    dunstify "Aria2" "Error"
     
    @@ -814,9 +814,9 @@ buku --add "Download with aria2c on the Homelab
    -
    dl-add $(echo "$1" | sed 's/\&af=.*$//g') && \
    -  dunstify "Aria2" "Download Started" || \
    -  dunstify "Aria2" "Error"
    +
      dl-add $(echo "$1" | sed 's/\&af=.*$//g') && \
    +    dunstify "Aria2" "Download Started" || \
    +    dunstify "Aria2" "Error"
     
    @@ -826,13 +826,13 @@ buku --add "Screenshot
    -
    filename=$(rofi -p "filename" -dmenu -lines 1)
    +
      filename=$(rofi -p "filename" -dmenu -lines 1)
     
    -if [ -n "filename" ]; then
    -    cd ~/Pictures/ && \
    -        firefox-developer-edition -P default -headless --screenshot "$filename.png" "$QUTE_URL" && \
    -        dunstify "Screenshot" "Taken successfully"
    -fi
    +  if [ -n "filename" ]; then
    +      cd ~/Pictures/ && \
    +          firefox-developer-edition -P default -headless --screenshot "$filename.png" "$QUTE_URL" && \
    +          dunstify "Screenshot" "Taken successfully"
    +  fi
     
    @@ -842,13 +842,13 @@ buku --add "Save to PDF
    -
    filename=$(rofi -p "filename" -dmenu -lines 1)
    +
      filename=$(rofi -p "filename" -dmenu -lines 1)
     
    -if [ -n "filename" ]; then
    -    cd ~/Pictures/ && \
    -        percollate pdf --css "@page { size: A4 portrait }" --output "$filename.pdf" "$QUTE_URL" && \
    -        dunstify "Percollate" "Successfully saved to pdf"
    -fi
    +  if [ -n "$filename" ]; then
    +      cd ~/Pictures/ && \
    +          percollate pdf --css "@page { size: A4 portrait }" --output "$filename.pdf" "$QUTE_URL" && \
    +          dunstify "Percollate" "Successfully saved to pdf"
    +  fi
     
    @@ -858,16 +858,16 @@ buku --add "Download AES video
    -
    m3u8_path=`curl -L -s "$QUTE_URL" | pcregrep -o1 "file = \"\/(.*aes.*mp4)\""`
    +
      m3u8_path=`curl -L -s "$QUTE_URL" | pcregrep -o1 "file = \"\/(.*aes.*mp4)\""`
     
    -if [ -z "$m3u8_path" ]; then
    -    dunstify --urgency=critical "Qutebrowser" "No m3u8 playlist found"
    -else
    -    dunstify "Qutebrowser" "Downloads..." && \
    -        cd ~/Downloads/ && \
    -        ffmpeg -user_agent "Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0" -referer "$QUTE_URL" -i "https://cdn2.digitellinc.com/play/_definst_/mp4:$m3u8_path/playlist.m3u8" -c copy "$QUTE_TITLE.mp4" && \
    -        dunstify "Qutebrowser" "$QUTE_TITLE Downloaded"
    -fi
    +  if [ -z "$m3u8_path" ]; then
    +      dunstify --urgency=critical "Qutebrowser" "No m3u8 playlist found"
    +  else
    +      dunstify "Qutebrowser" "Downloads..." && \
    +          cd ~/Downloads/ && \
    +          ffmpeg -user_agent "Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0" -referer "$QUTE_URL" -i "https://cdn2.digitellinc.com/play/_definst_/mp4:$m3u8_path/playlist.m3u8" -c copy "$QUTE_TITLE.mp4" && \
    +          dunstify "Qutebrowser" "$QUTE_TITLE Downloaded"
    +  fi
     
    @@ -876,7 +876,7 @@ buku --add "

    Author: Dehaeze Thomas

    -

    Created: 2021-01-01 ven. 20:09

    +

    Created: 2021-01-03 dim. 22:19

    diff --git a/docs/ranger.html b/docs/ranger.html index 9c35beb..fa8bd85 100644 --- a/docs/ranger.html +++ b/docs/ranger.html @@ -3,9 +3,9 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + -Ranger Configuration +Ranger @@ -17,7 +17,7 @@ | HOME
    -

    Ranger Configuration

    +

    Ranger

    Table of Contents

    @@ -38,7 +38,7 @@
  • Define keys for the browser
      -
    • Basic
    • +
    • Basic
    • Open Shell in current directory
    • Open With
    • Filter
    • @@ -62,7 +62,7 @@
    • Define keys for the console @@ -280,7 +280,7 @@ alias travel scout -aefiklst Extract

      -
      map ,x shell ~/.config/ranger/scripts/extract.sh %f
      +
        map ,x shell ~/.config/ranger/scripts/extract.sh %f
       
      @@ -288,7 +288,7 @@ Extract Compress

      -
      map ,z shell ~/.config/ranger/scripts/compress.sh %f
      +
        map ,z shell ~/.config/ranger/scripts/compress.sh %f
       
      @@ -296,7 +296,7 @@ Compress Get Bibtex from PDF

      -
      map ,b shell pdf2bib %f
      +
        map ,b shell pdf2bib %f
       
      @@ -304,7 +304,7 @@ Get Bibtex from PDF Delete first page of pdf

      -
      map ,d shell pdf-delete-first-page %f
      +
        map ,d shell pdf-delete-first-page %f
       
      @@ -312,8 +312,8 @@ Delete first page of pdf Convert images/pdf/…

      -
      map ,cp shell pdf2png %f
      -map ,cc shell convert-file %f
      +
        map ,cp shell pdf2png %f
      +  map ,cc shell convert-file %f
       
      @@ -321,7 +321,7 @@ map ,cc shell convert-file %f Magit Status

      -
      map ,gs shell emacsclient -create-frame --alternate-editor="" -n --eval '(magit-status)'
      +
        map ,gs shell emacsclient -create-frame --alternate-editor="" -n --eval '(magit-status)'
       
      @@ -329,7 +329,7 @@ Magit Status Open SXIV on current directory

      -
      map ,s shell nohup sxiv -t %d &
      +
        map ,s shell nohup sxiv -t %d &
       
      @@ -337,8 +337,8 @@ Open SXIV on current directory Upload with 0x0 / self hosted Tansfer.sh

      -
      map ,t shell upload %f
      -map ,T shell share %f
      +
        map ,t shell upload %f
      +  map ,T shell share %f
       
      @@ -346,7 +346,7 @@ map ,T shell share %f Open current folder with PCManFM

      -
      map ,o shell nohup pcmanfm %d &
      +
        map ,o shell nohup pcmanfm %d &
       
      @@ -354,7 +354,7 @@ Open current folder with PCManFM Open with Emacs

      -
      map ,e shell emacsclient -create-frame --alternate-editor="" -n %f
      +
        map ,e shell emacsclient -create-frame --alternate-editor="" -n %f
       
      @@ -362,7 +362,7 @@ Open with Emacs Print on Rnice

      -
      map ,p shell print-rnice %f &
      +
        map ,p shell print-rnice %f &
       
      @@ -370,7 +370,7 @@ Print on Rnice Backup to NAS

      -
      map ,B shell ~/.config/ranger/scripts/backup-to-nas.sh %s &
      +
        map ,B shell ~/.config/ranger/scripts/backup-to-nas.sh %s &
       
  • @@ -384,11 +384,11 @@ Backup to NAS

    Extract Script

    -
    if [ $TMUX ]; then
    -    tmux split -v -l 2 atool -x $1 && tmux select-pane -U
    -else
    -    atool -x $1
    -fi
    +
      if [ $TMUX ]; then
    +      tmux split -v -l 2 atool -x $1 && tmux select-pane -U
    +  else
    +      atool -x $1
    +  fi
     
    @@ -398,11 +398,11 @@ Backup to NAS

    Compress Script

    -
    if [ $TMUX ]; then
    -    tmux split -v -l 2 apack ${1%.*}.zip $1 && tmux select-pane -U
    -else
    -    apack ${1%.*}.zip $1
    -fi
    +
      if [ $TMUX ]; then
    +      tmux split -v -l 2 apack ${1%.*}.zip $1 && tmux select-pane -U
    +  else
    +      apack ${1%.*}.zip $1
    +  fi
     
    @@ -417,11 +417,11 @@ Backup to NAS
    -
    if [ $TMUX ]; then
    -    tmux split -v -l 2 rsync -a --inplace --info=progress2 --rsh='ssh -p10022' "$@" nas:/volume1/Data/Downloads/Backup/ && tmux select-pane -U
    -else
    -    rsync -a --info=progress2 --inplace --rsh='ssh -p10022' "$@" nas:/volume1/Data/Downloads/Backup/
    -fi
    +
      if [ $TMUX ]; then
    +      tmux split -v -l 2 rsync -a --inplace --info=progress2 --rsh='ssh -p10022' "$@" nas:/volume1/Data/Downloads/Backup/ && tmux select-pane -U
    +  else
    +      rsync -a --info=progress2 --inplace --rsh='ssh -p10022' "$@" nas:/volume1/Data/Downloads/Backup/
    +  fi
     
    @@ -436,11 +436,11 @@ Backup to NAS
    -
    if [ $TMUX ]; then
    -    tmux split -v -l 1 rsync -a --info=progress2 "${@:2}" "$1" && tmux select-pane -U
    -else
    -    rsync -a --info=progress2 "${@:2}" "$1"
    -fi
    +
      if [ $TMUX ]; then
    +      tmux split -v -l 1 rsync -a --info=progress2 "${@:2}" "$1" && tmux select-pane -U
    +  else
    +      rsync -a --info=progress2 "${@:2}" "$1"
    +  fi
     
    @@ -452,40 +452,40 @@ Backup to NAS

    Define keys for the browser

    -
    -

    Basic

    -
    +
    +

    Basic

    +
    -
    map Q quit!
    -map q eval fm.execute_console("shell tmux detach") if 'TMUX' in os.environ.keys() else fm.execute_console("quit")
    +
      map Q quit!
    +  map q eval fm.execute_console("shell tmux detach") if 'TMUX' in os.environ.keys() else fm.execute_console("quit")
     
    -
    map <C-c> abort
    -map <esc> change_mode normal
    -map ~ set viewmode!
    +
      map <C-c> abort
    +  map <esc> change_mode normal
    +  map ~ set viewmode!
     
    -
    map ? help
    +
      map ? help
     
    -
    map : console
    -map ; console
    +
      map : console
    +  map ; console
     
    -
    map ! console shell%space
    +
      map ! console shell%space
     
    -
    map @ console -p6 shell  %%s
    +
      map @ console -p6 shell  %%s
     
    @@ -495,8 +495,8 @@ map ; console

    Open Shell in current directory

    -
    map s shell $SHELL
    -map S shell nohup $TERMINAL &
    +
      map s shell $SHELL
    +  map S shell nohup $TERMINAL &
     
    @@ -506,7 +506,7 @@ map S shell nohup $TERMINAL &

    Open With

    -
    map O chain draw_possible_programs; console open_with%space
    +
      map O chain draw_possible_programs; console open_with%space
     
    @@ -516,9 +516,9 @@ map S shell nohup $TERMINAL &

    Filter

    -
    map f console filter%space
    -# Reset filter
    -map F filter
    +
      map f console filter%space
    +  # Reset filter
    +  map F filter
     
    @@ -528,8 +528,8 @@ map F filter

    Tagging / Marking

    -
    map <Space> mark_files toggle=True
    -map v       mark_files all=True toggle=True
    +
      map <Space> mark_files toggle=True
    +  map v       mark_files all=True toggle=True
     
    @@ -539,12 +539,12 @@ map F filter

    VIM-like

    -
    copymap <UP>       k
    -copymap <DOWN>     j
    -copymap <LEFT>     h
    -copymap <RIGHT>    l
    -copymap <HOME>     gg
    -copymap <END>      G
    +
      copymap <UP>       k
    +  copymap <DOWN>     j
    +  copymap <LEFT>     h
    +  copymap <RIGHT>    l
    +  copymap <HOME>     gg
    +  copymap <END>      G
     
    @@ -554,24 +554,24 @@ copymap <END> G

    Jumping around

    -
    map H     history_go -1
    -map L     history_go 1
    +
      map H     history_go -1
    +  map L     history_go 1
     
    -
    map ]     move_parent 1
    -map [     move_parent -1
    +
      map ]     move_parent 1
    +  map [     move_parent -1
     
    -
    map }     traverse
    +
      map }     traverse
     
    -
    map cd console cd%space
    +
      map cd console cd%space
     
    @@ -581,15 +581,15 @@ map [ move_parent -1

    Go to special folders

    -
    map gh cd ~/
    -map gb cd ~/Cloud/brain
    -map gm cd ~/Cloud/thesis
    -map gp cd ~/Pictures
    -map gP cd ~/Cloud/personal
    -map gT cd ~/.local/share/Trash/files
    -map gd cd ~/Downloads
    -map gc cd ~/Cloud
    -map gV cd ~/.config/literate-dotfiles
    +
      map gh cd ~/
    +  map gb cd ~/Cloud/brain
    +  map gm cd ~/Cloud/thesis
    +  map gp cd ~/Pictures
    +  map gP cd ~/Cloud/personal
    +  map gT cd ~/.local/share/Trash/files
    +  map gd cd ~/Downloads
    +  map gc cd ~/Cloud
    +  map gV cd ~/.config/literate-dotfiles
     
    @@ -599,10 +599,10 @@ map gV cd ~/.config/literate-dotfiles

    Get size of folders

    -
    # 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
    +
      # 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
     
    @@ -612,12 +612,12 @@ map gV cd ~/.config/literate-dotfiles

    Yank path of directory/file

    -
    # 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
    +
      # 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
     
    @@ -627,7 +627,7 @@ map yn shell -f echo -n %f | xsel -i; xsel -o | xsel -i -b

    Drag and Drop

    -
    map D shell dragon-drag-and-drop -a -x %p
    +
      map D shell dragon-drag-and-drop -a -x %p
     
    @@ -637,10 +637,10 @@ map yn shell -f echo -n %f | xsel -i; xsel -o | xsel -i -b

    Rename files

    -
    map a  rename_append
    -map C  eval fm.execute_console("bulkrename") if fm.thisdir.marked_items else fm.open_console("rename ")
    -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)
    +
      map a  rename_append
    +  map C  eval fm.execute_console("bulkrename") if fm.thisdir.marked_items else fm.open_console("rename ")
    +  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)
     
    @@ -650,14 +650,14 @@ map I eval fm.open_console('rename ' + fm.thisf

    Paste files

    -
    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
    +
      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
     
    @@ -665,7 +665,7 @@ map pht paste_hardlinked_subtree Paste with Rsync

    -
    map pr shell ~/.config/ranger/scripts/paste-rsync.sh %d %c
    +
      map pr shell ~/.config/ranger/scripts/paste-rsync.sh %d %c
     
    @@ -675,9 +675,9 @@ Paste with Rsync

    Delete and move files

    -
    map dD shell -s trash-put %s
    -map dd cut
    -map du uncut
    +
      map dD shell -s trash-put %s
    +  map dd cut
    +  map du uncut
     
    @@ -687,8 +687,8 @@ map du uncut

    Copy files

    -
    map yy copy
    -map yu uncut
    +
      map yy copy
    +  map yu uncut
     
    @@ -698,9 +698,9 @@ map yu uncut

    Searching

    -
    map /  console search%space
    -map n  search_next
    -map N  search_next forward=False
    +
      map /  console search%space
    +  map n  search_next
    +  map N  search_next forward=False
     
    @@ -710,14 +710,14 @@ map n search_next

    Tabs

    -
    map <C-n>     tab_new ~
    -map <C-w>     tab_close
    +
      map <C-n>     tab_new ~
    +  map <C-w>     tab_close
     
    -map <TAB>     tab_move 1
    -map <S-TAB>   tab_move -1
    +  map <TAB>     tab_move 1
    +  map <S-TAB>   tab_move -1
     
    -map gn        tab_new ~
    -map gt        tab_move 1
    +  map gn        tab_new ~
    +  map gt        tab_move 1
     
    @@ -727,10 +727,10 @@ map gt tab_move 1

    Settings

    -
    map zh    set show_hidden!
    +
      map zh    set show_hidden!
     
    -map zi    set preview_images!
    -map zv    set use_preview_script!
    +  map zi    set preview_images!
    +  map zv    set use_preview_script!
     
    @@ -740,13 +740,13 @@ map zv set use_preview_script!

    Bookmarks

    -
    map `<any>  enter_bookmark %any
    -map '<any>  enter_bookmark %any
    -map m<any>  set_bookmark %any
    -map um<any> unset_bookmark %any
    +
      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>
    +  map m<bg>   draw_bookmarks
    +  copymap m<bg>  um<bg> `<bg> '<bg>
     
    @@ -756,7 +756,7 @@ map '<any> enter_bookmark %any

    FZF

    -
    map <C-f> fzf_select
    +
      map <C-f> fzf_select
     
    @@ -767,9 +767,9 @@ map '<any> enter_bookmark %any

    Define keys for the console

    -
    -

    Basic

    -
    +
    +

    Basic

    +
    cmap <tab>   eval fm.ui.console.tab()
     cmap <s-tab> eval fm.ui.console.tab(-1)
    @@ -820,209 +820,209 @@ copycmap <end>       <C-e>
     

    Rifle

    -
    # 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.
    +
      # 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.
    +  #-------------------------------------------
    +  # 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 qutebrowser,    X, flag f = qutebrowser -- "$@"
    -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 "$@"
    +  ext x?html?, has qutebrowser,    X, flag f = qutebrowser -- "$@"
    +  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 -- "$@"
    +  #Spreadsheets for scim
    +  ext sc|csv|sxc|xlsx?|xlt|xlw|gnm|gnumeric, = sc-im -- "$@"
     
    -#-------------------------------------------
    -# Misc
    -#-------------------------------------------
    -ext org                       = emacsclient -c "$1"
    +  #-------------------------------------------
    +  # Misc
    +  #-------------------------------------------
    +  ext org                       = emacsclient -c "$1"
     
    -# 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" -- "$@"
    +  # 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
    +  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"
    +  #--------------------------------------------
    +  # 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 -- "$@"
    +  #--------------------------------------------
    +  # 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 -- "$@"
    +  #--------------------------------------------
    +  # 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 -- "$@"
    +  #--------------------------------------------
    +  # 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 zathura,  X, flag f = zathura -- "$@"
    -ext pdf, has llpp,     X, flag f = llpp "$@"
    -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 "$@"
    +  #-------------------------------------------
    +  # Documents
    +  #-------------------------------------------
    +  ext pdf, has zathura,  X, flag f = zathura -- "$@"
    +  ext pdf, has llpp,     X, flag f = llpp "$@"
    +  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 epub, has zathura,  X, flag f = zathura -- "$@"
    +  ext epub, has mupdf, X, flag f = mupdf "$@"
     
     
    -ext docx?, has wps, X, flag f = wps "$@"
    +  ext docx?, has wps, X, flag f = wps "$@"
     
    -ext docx?, has catdoc,       terminal = catdoc -- "$@" | "$PAGER"
    +  ext docx?, has catdoc,       terminal = catdoc -- "$@" | "$PAGER"
     
    -  ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has wpp,         X, flag f = wpp "$@"
    -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 pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has wpp,         X, flag f = wpp "$@"
    +  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 -- "$@"
    +  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 -- "$@"
    +  #-------------------------------------------
    +  # 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 sxiv,      X, flag f = sxiv -- "$@"
    -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 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 -- "$@"
    +  ext xcf,                    X, flag f = gimp -- "$@"
    +  mime ^image, has sxiv,      X, flag f = sxiv -- "$@"
    +  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 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 "$@"
    +  #-------------------------------------------
    +  # 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 -- "$@"
    +  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 "$@"
    +  # 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"
    +  #-------------------------------------------
    +  # 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" -- "$@"
    +  # 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 -- "$@"
    +  ext blend, has blender, X, flag f =  blender -- "$@"
     
    -has dragon-drag-and-drop, X, flag f = dragon-drag-and-drop -a -x "$@"
    +  has dragon-drag-and-drop, X, flag f = dragon-drag-and-drop -a -x "$@"
     
    @@ -1036,9 +1036,9 @@ label wallpaper, number 14, mi

    Import

    -
    from ranger.api.commands import *
    +
      from ranger.api.commands import *
     
    -import os
    +  import os
     
    @@ -1048,35 +1048,35 @@ label wallpaper, number 14, mi

    fzf_select

    -
    class fzf_select(Command):
    -    """
    -    :fzf_select
    +
      class fzf_select(Command):
    +      """
    +      :fzf_select
     
    -    Find a file using fzf.
    +      Find a file using fzf.
     
    -    With a prefix argument select only directories.
    +      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)
    +      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)
     
    @@ -1085,7 +1085,7 @@ label wallpaper, number 14, mi

    Author: Dehaeze Thomas

    -

    Created: 2021-01-01 ven. 20:09

    +

    Created: 2021-01-03 dim. 22:51

    diff --git a/docs/rofi.html b/docs/rofi.html index 243e8af..179d3cf 100644 --- a/docs/rofi.html +++ b/docs/rofi.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Rofi Configuration @@ -32,52 +32,52 @@

    Rofi

    -
    configuration {
    -modi: "window,run,ssh";
    -width: 50;
    -lines: 15;
    -columns: 1;
    -font: "Hack Nerd Font 12";
    -fixed-num-lines: true;
    -show-icons: false;
    -terminal: "rofi-sensible-terminal";
    -sort: false;
    -case-sensitive: false;
    -cycle: true;
    -sidebar-mode: false;
    -auto-select: false;
    -combi-modi: "window,run";
    -matching: "normal";
    -line-margin: 2;
    -line-padding: 1;
    -separator-style: "dash";
    -hide-scrollbar: true;
    -fullscreen: false;
    -dpi: -1;
    -show-match: true;
    -theme: "gruvbox-dark-soft";
    -kb-move-front: "Control+a";
    -kb-move-end: "Control+e";
    -kb-move-word-back: "Alt+b,Control+Left";
    -kb-move-word-forward: "Alt+f,Control+Right";
    -kb-move-char-back: "Left,Control+b";
    -kb-move-char-forward: "Right,Control+f";
    -kb-remove-char-forward: "Delete,Control+d";
    -kb-remove-char-back: "BackSpace,Shift+BackSpace";
    -kb-remove-to-eol: "Control+k";
    -kb-remove-to-sol: "Control+u";
    -kb-accept-entry: "Control+j,Return,KP_Enter";
    -kb-accept-custom: "Control+Return";
    -kb-accept-alt: "Shift+Return";
    -kb-delete-entry: "Shift+Delete";
    -kb-row-up: "Up,Control+p";
    -kb-row-down: "Down,Control+n";
    -kb-row-tab: "Tab";
    -kb-row-first: "Home,KP_Home";
    -kb-row-last: "End,KP_End";
    -kb-row-select: "Control+space";
    -kb-cancel: "Escape,Control+g";
    -}
    +
      configuration {
    +  modi: "window,run,ssh";
    +  width: 50;
    +  lines: 15;
    +  columns: 1;
    +  font: "Hack Nerd Font 12";
    +  fixed-num-lines: true;
    +  show-icons: false;
    +  terminal: "rofi-sensible-terminal";
    +  sort: false;
    +  case-sensitive: false;
    +  cycle: true;
    +  sidebar-mode: false;
    +  auto-select: false;
    +  combi-modi: "window,run";
    +  matching: "normal";
    +  line-margin: 2;
    +  line-padding: 1;
    +  separator-style: "dash";
    +  hide-scrollbar: true;
    +  fullscreen: false;
    +  dpi: -1;
    +  show-match: true;
    +  theme: "gruvbox-dark-soft";
    +  kb-move-front: "Control+a";
    +  kb-move-end: "Control+e";
    +  kb-move-word-back: "Alt+b,Control+Left";
    +  kb-move-word-forward: "Alt+f,Control+Right";
    +  kb-move-char-back: "Left,Control+b";
    +  kb-move-char-forward: "Right,Control+f";
    +  kb-remove-char-forward: "Delete,Control+d";
    +  kb-remove-char-back: "BackSpace,Shift+BackSpace";
    +  kb-remove-to-eol: "Control+k";
    +  kb-remove-to-sol: "Control+u";
    +  kb-accept-entry: "Control+j,Return,KP_Enter";
    +  kb-accept-custom: "Control+Return";
    +  kb-accept-alt: "Shift+Return";
    +  kb-delete-entry: "Shift+Delete";
    +  kb-row-up: "Up,Control+p";
    +  kb-row-down: "Down,Control+n";
    +  kb-row-tab: "Tab";
    +  kb-row-first: "Home,KP_Home";
    +  kb-row-last: "End,KP_End";
    +  kb-row-select: "Control+space";
    +  kb-cancel: "Escape,Control+g";
    +  }
     
    @@ -87,65 +87,64 @@ kb-cancel: "Escape,Control+g";

    Theme

    -
    configuration {
    +
      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";
    -}
    +  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  ////
    +  * {
    +  ////  COLORS  ////
     
    -////    uncomment to match bspwm edition theme
    +  ////  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;
    +  ////   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;
    +  ////  common - active and urgent
    +  active-background:           #3A464BFF;
    +  urgent-background:           #800000FF;
    +  urgent-foreground:           @foreground;
    +  selected-urgent-background:  @urgent-foreground;
    +  selected-urgent-foreground:  @urgent-background;
     
    -////    TEXT    ////
    +  ////  TEXT    ////
     
       font:             "xos4 Terminus 18px";
    -//    font:             "Knack Nerd Font 16px";
    -    text-color:         @foreground;
    +  text-color:           @foreground;
     
    -////    PADDING ETC ////
    +  ////  PADDING ETC ////
     
       margin:               0px;
       border:               0px;
    @@ -155,118 +154,118 @@ kb-cancel: "Escape,Control+g";
       elementmargin:        0px 2px;
       listmargin:           0px 2px 0px 0px;
     
    -////    SIZE    ////
    +  ////  SIZE    ////
     
       windowwidth:  40ch;
       buttonwidth:  18ch;
       lines:            12;
       fixed-height: false;
     
    -////    POSITION    ////
    +  ////  POSITION    ////
     
       location:     northwest;
       anchor:           northwest;
       x-offset:     0px;
       y-offset:     24px;
     
    -////    LAYOUT  ////
    +  ////  LAYOUT  ////
     
       scrollbar:        true;
     
    -////    uncomment to get submenu-like style
    +  ////  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 {
    +  ////  uncomment to get tabs-like style
    +  //    menustyle:      [ tb-mainbox ];
    +  //    buttonpadding:  14px 1ch;
    +  //    dynamic:        false;
    +  }
    +  //////////////////////////////////////////
    +  window {
       width:            @windowwidth;
       children:     @menustyle;
    -}
    -//submenu-style
    -sb-mainbox {
    +  }
    +  //submenu-style
    +  sb-mainbox {
       orientation:  horizontal;
       children:     [ sidebar, vertibox ];
    -}
    -//tabs-style
    -tb-mainbox {
    +  }
    +  //tabs-style
    +  tb-mainbox {
       orientation:  vertical;
       children:     [ inputbar, horibox ];
       background-color: @background;
    -}
    -//desktop-submenu
    -dt-mainbox {
    +  }
    +  //desktop-submenu
    +  dt-mainbox {
       orientation:  vertical;
       children:     [ boxdummy, sb-mainbox ];
    -}
    -horibox {
    +  }
    +  horibox {
       orientation:  horizontal;
       children:     [ listview, sidebar ];
    -}
    -sidebar {
    +  }
    +  sidebar {
       orientation:  vertical;
    -}
    -button {
    +  }
    +  button {
       horizontal-align: 0;
       padding:      @buttonpadding;
       width:            @buttonwidth;
       background-color: @button-bg;
       expand:           false;
    -}
    -vertibox {
    +  }
    +  vertibox {
       orientation:  vertical;
       children:     [ inputbar, listview ];
       background-color: @background;
    -}
    -prompt {
    +  }
    +  prompt {
       enabled:      false;
    -}
    -listview {
    +  }
    +  listview {
       margin:           @listmargin;
    -}
    -scrollbar {
    +  }
    +  scrollbar {
       handle-width: 0.5ch;
       handle-color: @selected;
    -}
    -boxdummy {
    +  }
    +  boxdummy {
       enabled:      false;
       orientation:  vertical;
       expand:           false;
       children:     [ textboxdummy ];
    -}
    -textboxdummy {
    +  }
    +  textboxdummy {
       str:          " ";
    -}
    -element, inputbar, textboxdummy {
    +  }
    +  element, inputbar, textboxdummy {
       padding:      @elementpadding;
       margin:           @elementmargin;
       width:            @elementwidth;
    -}
    -element.normal.active,
    -element.alternate.active {
    +  }
    +  element.normal.active,
    +  element.alternate.active {
       background-color: @active-background;
       text-color:           @selected-foreground;
    -}
    -element.selected,
    -button.selected {
    +  }
    +  element.selected,
    +  button.selected {
       background-color: @selected;
       text-color:           @selected-foreground;
    -}
    -element.normal.urgent,
    -element.alternate.urgent {
    +  }
    +  element.normal.urgent,
    +  element.alternate.urgent {
       background-color: @urgent-background;
       text-color:           @urgent-foreground;
    -}
    -element.selected.urgent {
    +  }
    +  element.selected.urgent {
       background-color: @selected-urgent-background;
       text-color:           @selected-urgent-foreground;
    -}
    +  }
     
    @@ -274,7 +273,7 @@ element.normal.urgent,

    Author: Dehaeze Thomas

    -

    Created: 2021-01-01 ven. 20:09

    +

    Created: 2021-01-03 dim. 22:25

    diff --git a/docs/windows.html b/docs/windows.html index 507ce7b..fc42530 100644 --- a/docs/windows.html +++ b/docs/windows.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Windows Config and Install @@ -26,6 +26,12 @@
  • Install Windows10 PRO
  • Install Software using Chocolatey
  • Debloat windows10
  • +
  • SSHFS + +
  • Software Setup
    -
    yay -S woeusb
    +
      yay -S woeusb
     
    -
    sudo woeusb --device file.iso /dev/sdb --target-filesystem ntfs
    +
      sudo woeusb --device file.iso /dev/sdb --target-filesystem ntfs
     
  • @@ -66,7 +72,7 @@ First install Chocolatey using a PowerShell as administrator:

    -
    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
    +
      Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
     
    @@ -74,7 +80,7 @@ First install Chocolatey using a PowerShell as administrator: Then, install all required software using one command:

    -
    choco install firefox 7zip.install vlc git.install malwarebytes sumatrapdf.install steam anydesk discord f.lux cmder syncthing cura ccleaner
    +
      choco install -y firefox 7zip.install vlc git.install malwarebytes sumatrapdf.install steam anydesk discord f.lux cmder cura ccleaner neovim
     
    @@ -91,12 +97,102 @@ Then, install all required software using one command: Run a PowerShell with administrative rights and run:

    -
    iex ((New-Object System.Net.WebClient).DownloadString('https://git.io/debloat'))
    +
      iex ((New-Object System.Net.WebClient).DownloadString('https://git.io/debloat'))
     
    +
    +

    SSHFS

    +
    +
    +
    +

    SSH Setup

    +
    +

    +Install OpenSSH from chocolatey as the one packed with Windows is quite old (link): +

    +
    +
      choco install openssh --package-parameters="/SSHAgentFeature"
    +
    +
    + +

    +Then generate the keys: +

    +
    +
      ssh-keygen
    +
    +
    + +

    +Start the SSH-Agent to automatically unlock the keys: +

    +
    +
      # Start the service
    +  Start-Service ssh-agent
    +
    +  # This should return a status of Running
    +  Get-Service ssh-agent
    +
    +  # Now load your key files into ssh-agent
    +  ssh-add
    +
    +
    + +

    +Copy the public key with: +

    +
    +
      Get-Content -Path $HOME\.ssh\id_rsa.pub | Set-Clipboard
    +
    +
    + +

    +And add it to ~/.ssh/authorized_keys on the server side. +

    + +

    +Finally, it should be possible to ssh to the server. +

    +
    +
    + +
    +

    SSHFS

    +
    +

    +Install sshfs-win. +

    + +

    +Run the Registry Editor, and find Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WinFsp\Services\sshfs.kr, then edit CommandLine: +

    +
    +
      svc %1 %2 %U  -o create_dir_umask=000 -o create_file_umask=111 -o umask=000
    +
    +
    + +

    +Then, to mount the network drive using sshfs: +

    +
    +
      net use X: \\sshfs.kr\thomas@192.168.1.150\srv\storage /persistent:yes
    +
    +
    + +

    +To un-mount it: +

    +
    +
      net use X: /delete
    +
    +
    +
    +
    +
    +

    Software Setup

    @@ -130,7 +226,7 @@ Then, Syncthing can be accessed with: http://lo

    Author: Dehaeze Thomas

    -

    Created: 2021-01-01 ven. 20:09

    +

    Created: 2021-01-03 dim. 22:25

    diff --git a/doom.org b/doom.org index d969754..72087cc 100644 --- a/doom.org +++ b/doom.org @@ -1,5 +1,15 @@ #+TITLE: Doom Emacs Configuration -#+SETUPFILE: ./setup/org-setup-file.org +#+STARTUP: overview + +#+LANGUAGE: en +#+EMAIL: dehaeze.thomas@gmail.com +#+AUTHOR: Dehaeze Thomas + +#+HTML_LINK_HOME: ./index.html +#+HTML_LINK_UP: ./index.html + +#+HTML_HEAD: +#+HTML_HEAD: #+PROPERTY: header-args :tangle ~/.config/doom/config.el :results none :padline no * Introduction and Resources :ignore: @@ -2586,16 +2596,16 @@ Create Org-Roam file from heading ([[https://ag91.github.io/blog/2020/11/12/writ :init :config ;; Bibliography file - (setq bibtex-completion-bibliography "~/Cloud/brain/biblio/references.bib") + (setq bibtex-completion-bibliography '("~/Cloud/brain/biblio/references.bib" + "~/Cloud/acoustic/resources/acoustics.bib")) ;; Directory with all the pdfs - (setq bibtex-completion-library-path "~/Cloud/pdfs/") + (setq bibtex-completion-library-path '("~/Cloud/pdfs/" + "~/Cloud/acoustic/resources/pdfs/")) ;; Directory with notes files (setq bibtex-completion-notes-path "~/Cloud/brain/") - (setq bibtex-completion-notes-extension ".org") - (setq bibtex-completion-pdf-extension '(".pdf" ".djvu")) (setq bibtex-completion-additional-search-fields '(keywords)) diff --git a/index.org b/index.org index 4d576b1..1fa6f5a 100644 --- a/index.org +++ b/index.org @@ -1,9 +1,12 @@ #+TITLE: Dotfiles - Manjaro Linux +#+OPTIONS: toc:nil +#+OPTIONS: html-postamble:nil #+SETUPFILE: ./setup/org-setup-file.org +#+HTML_HEAD: -The general installation process is described [[file:install.org][here]]. +The general installation procedure is described [[file:install.org][here]]. -* Desktop Configuration +There are Specific configuration files for: - *Windows Manager*: [[file:bspwm.org][BSPWM]] and [[file:i3.org][I3]] - *Hotkey Manager*: [[file:sxhkd.org][SXHKD]] - *Status Bar*: [[file:polybar.org][Polybar]] @@ -11,44 +14,26 @@ The general installation process is described [[file:install.org][here]]. - *Compositor*: [[file:compositor.org][Picom]] - *Notification Manager*: [[file:notifications.org][Dunst]] - *Service Manager*: [[file:systemd.org][Systemd]] -- [[file:xconfig.org][X configuration]] - -* Editors -- [[file:vim.org][Vim]] -- [[./doom.org][Doom Emacs]] ([[file:emacs-library-babel.org][library of babel]], [[file:emacs-snippets.org][snippets]]) - -* Command Line -- [[file:bash.org][Bash]] and [[file:zsh.org][ZSH]] -- Terminal: [[file:termite.org][Termite]] -- Terminal Multiplexer [[file:tmux.org][TMUX]] - -* Multimedia -- [[file:image.org][Image]] -- [[file:music.org][Music]] -- [[file:video.org][Video]] - -* Internet Related -- Web Browser: [[file:qutebrowser.org][Qutebrowser]] -- Bookmark Manager: [[file:bookmarks.org][Buku]] - -* PDF Reader -- [[file:zathura.org][Zathura]] - -* File Managers -- GUI: [[file:pcmanfm.org][Pcmanfm]] -- Terminal based: [[file:ranger.org][Ranger]] - -* Organization -- [[file:calendar.org][Calendar]] -- [[file:mail.org][Mail]] -- [[file:contacts.org][Contacts]] -- RSS-Reader: [[file:newsboat.org][Newsboat]] - -* Others -- [[file:applications.org][Desktop Applications]] -- [[file:matlab.org][Matlab]] -- Some useful [[file:binaries.org][Binaries]] -- [[file:git.org][Git]] Configuration -- [[file:gtk.org][GTK]] +- *Display Server*: [[file:xconfig.org][Xorg]] +- *Editors*: [[file:vim.org][Neovim]] and [[./doom.org][Emacs (Doom)]] ([[file:emacs-library-babel.org][library of babel]], [[file:emacs-snippets.org][snippets]]) +- *Shell*: [[file:bash.org][Bash]] +- *Terminal Emulator*: [[file:termite.org][Termite]] +- *Terminal Multiplexer* [[file:tmux.org][TMUX]] +- *Image Setup*: [[file:image.org][SXIV]] +- *Music Setup*: [[file:music.org][NCMPCPP, Mopidy and Beets]] +- *Video Setup*: [[file:video.org][MPV]] +- *Web Browser*: [[file:qutebrowser.org][Qutebrowser]] +- *PDF Reader*: [[file:zathura.org][Zathura]] +- *GUI File Manager*: [[file:pcmanfm.org][Pcmanfm]] +- *Terminal File Manager*: [[file:ranger.org][Ranger]] +- *Calendar*: [[file:calendar.org][Vdirsyncer and Khal]] +- *Mails*: [[file:mail.org][Mbsync, Msmtp, Mu and Neomutt]] +- *Contacts*: [[file:contacts.org][Khard]] +- *RSS-Reader*: [[file:newsboat.org][Newsboat]] +- *Version Control*: [[file:git.org][Git]] +- *Scripts*: [[file:binaries.org][Scripts]] +- *Desktop Applications*: [[file:applications.org][.desktop files]] +- *Computation*: [[file:matlab.org][Matlab]] +- *GUI Toolkit*: [[file:gtk.org][GTK]] - [[file:config.org][Other Config]] diff --git a/install.org b/install.org index 5c5c540..3694156 100644 --- a/install.org +++ b/install.org @@ -1,15 +1,16 @@ #+TITLE: Installation #+SETUPFILE: ./setup/org-setup-file.org -* Package Manager: yay +* =yay= - Package Manager https://github.com/Jguer/yay -** Installation +Installation: #+begin_src bash -sudo pacman -S yay + sudo pacman -S yay #+end_src -** CheatSheet +#+name: tab:yay_cheatsheet +#+caption: =yay= - Cheatsheet | Command | Usage | |---------------------+-----------------------------| | =yay= | Perform system upgrade | @@ -20,50 +21,46 @@ sudo pacman -S yay | =yay -Yc= | Clean unneeded dependencies | To check all installed packages: -=pacman -Qq | fzf --preview 'pacman -Qil {}' --layout=reverse --bind 'enter:execute(pacman -Qil {} | less)'= +#+begin_src bash + pacman -Qq | fzf --preview 'pacman -Qil {}' --layout=reverse --bind 'enter:execute(pacman -Qil {} | less)' +#+end_src -* Git Setup -https://git-scm.com/ +* =git= - Version Control System -** Installation +Installation: #+begin_src bash yay -S git #+end_src -** Configuration [[file:git.org][Git]] Configuration: - =~/.gitconfig= - =~/.gitignore_global= -** Diff-So-Fancy -https://github.com/so-fancy/diff-so-fancy -*** Installation +[[https://github.com/so-fancy/diff-so-fancy][Diff-So-Fancy]] is a nice addition to have good-looking diffs. +It can be installed like so: #+begin_src bash yay -S diff-so-fancy #+end_src -*** Configuration +And configured with the following command: #+begin_src bash git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX" #+end_src -** Credential Helper setup with Pass -This is explained in a further part: [[*Integration with Git][Integration of Pass with Git]]. +=pass= can be used as credential helper for git repositories. -* Terminal -https://github.com/thestinger/termite -** Termite -*** Installation +* =termite= - Terminal +[[https://github.com/thestinger/termite][Termite]] is a very nice keyboard-centric terminal. + +It can be installed like so: #+begin_src bash yay -S termite #+end_src -*** Configuration -[[file:dotfiles/termite.org][termite.org]] -- =~/.config/termite/config= - -*** Cheatsheet +Its configuration file is described [[file:termite.org][here]]. +#+name: tab:termite_cheatsheet +#+caption: =termite= - Cheatsheet | Command | Usage | |--------------------+-------------------------| | =ctrl-shift-x= | activate url hints mode | @@ -73,42 +70,31 @@ https://github.com/thestinger/termite | =ctrl += | increase font size | | =ctrl -= | decrease font size | -** Unicode Rxvt -*** Installation -#+begin_src bash - yay -S rxvt-unicode -#+end_src - -*** Configuration -Most of Urxvt configuration is done in =~/.Xresources= - -* Shell: Bash and ZSH +* =bash= - Shell https://wiki.archlinux.org/index.php/Bash -** Installation +Installation: #+begin_src bash yay -S bash bash-completion zsh #+end_src -** Configuration [[file:bash.org][Bash]] configuration: - =~/.bashrc= - =~/.bash_profile= - =~/.config/bash/= - =~/.profile= -* Terminal Multiplexer: Tmux +* =tmux= - Terminal Multiplexer https://github.com/tmux/tmux -** Installation +Installation: #+begin_src bash yay -S tmux #+end_src -** Configuration [[file:tmux.org][TMUX]] configuration -** Ressources +Ressources: - https://github.com/gpakosz/.tmux - https://gist.github.com/MohamedAlaa/2961058 - https://blog.bugsnag.com/tmux-and-vim/ @@ -116,7 +102,8 @@ https://github.com/tmux/tmux - https://github.com/rothgar/awesome-tmux - https://thoughtbot.com/upcase/tmux -** Cheatsheet +#+name: tab:tmux_cheatsheet +#+caption: =tmux= - Cheatsheet | Command | Usage | |----------------+-------------------------------| | =ctrl-spc= | Prefix | @@ -127,74 +114,87 @@ https://github.com/tmux/tmux | =ctrl-h,j,k,l= | Move between windows | * Fonts -** Installation -#+begin_src bash - yay -S nerd-fonts-complete -#+end_src - -or just +My font of choice is =nerd-fonts-hack= which can be installed as so: #+begin_src bash yay -S nerd-fonts-hack #+end_src -For emojis: +For emojis, use: #+begin_src bash yay -S noto-fonts-emoji #+end_src -** Default fonts Default font used: - Monospace Font: =Hack Nerd Font Mono= - Serif Font: =Hack Nerd Font= - Sans Font: =Hack Nerd Font= -List all fonts available: =fc-list= +To list all fonts available: +#+begin_src bash + fc-list +#+end_src -** Select font +To select fonts using a GUI, =gtk2fontsel= can be used: #+begin_src bash yay -S gtk2fontsel #+end_src -* Text Editors +* =emacs= and =vim= - Text Editors ** Neovim -https://github.com/neovim/neovim +I use [[https://github.com/neovim/neovim][Neovim]] for all the small edits. -*** Installation +Installation: #+begin_src bash -yay -S neovim + yay -S neovim #+end_src -*** Configuration -[[file:vim.org][Vim]] configuration +The Neovim configuration can be found [[file:vim.org][here]]. + +Then install the plugin manager [[https://github.com/junegunn/vim-plug][plug]]: +#+begin_src bash + sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' +#+end_src + +And to install/setup all the plugins: +#+begin_src bash + nvim +PlugInstall + nvim +UpdateRemotePlugins +#+end_src ** Emacs -https://www.gnu.org/software/emacs/ +I use [[https://www.gnu.org/software/emacs/][Emacs]] and the [[https://github.com/hlissner/doom-emacs][Doom]] framework. -*** Installation +Install Emacs: #+begin_src bash -yay -S emacs + yay -S emacs #+end_src -*** Configuration -[[./doom.org][Doom Emacs]] configuration - -*** SpellCheck with Aspell +And then the Doom framework: #+begin_src bash -yay -S aspell aspell-en aspell-fr + git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d + ~/.emacs.d/bin/doom install +#+end_src + +The Emacs configuration can be found [[./doom.org][here]]. + +SpellCheck with Aspell: +#+begin_src bash + yay -S aspell aspell-en aspell-fr #+end_src * SSH setup -** Generating a new SSH key +Generate a new SSH key: #+begin_src bash ssh-keygen -t rsa -b 4096 -C "dehaeze.thomas@gmail.com" #+end_src -** Start the ssh-agent in the background +Start the ssh-agent in the background: #+begin_src bash eval "$(ssh-agent -s)" #+end_src -** Add the SSH key to the ssh-agent +Add the SSH key to the ssh-agent: #+begin_src bash ssh-add ~/.ssh/id_rsa #+end_src @@ -202,50 +202,36 @@ yay -S aspell aspell-en aspell-fr * GnuPG https://gnupg.org/ -** Install the gnupg package: +Install the gnupg package: #+begin_src bash yay -S gnupg #+end_src -** Create a key pair +Create a key pair: #+begin_src bash gpg --full-gen-key #+end_src -** Configure the gpg-agent to cache the passphrase -Edit the following file =~/.gnupg/gpg-agent.conf= - +To configure the =gpg-agent= to cache the passphrase, edit the following file =~/.gnupg/gpg-agent.conf=: #+begin_src conf default-cache-ttl 60480000 max-cache-ttl 60480000 #+end_src -** Gnome-Keyring and automatic GnuPG key unlocking -Note: GNOME users, and by extension any gnome-keyring user may have to follow the instructions at the end of the previous section on enabling autologin. - -Alternative: https://github.com/cruegge/pam-gnupg - -* Launcher - Rofi -https://github.com/DaveDavenport/rofi - -Alternative: -- =dmenu= is sometimes used - -** Installation +Install =Gnome-Keyring= to automatically unlock the GnuPG keys: #+begin_src bash - yay -S rofi rofi-calc + yay -S gnome-keyring #+end_src -** Setup rofi as a dmenu replacement -Setup rofi as a dmenu replacement in =~/.i3/config=: -#+begin_src - bindsym $mod+d exec --no-startup-id rofi -show run +* =rofi= - Application Launcher +[[https://github.com/DaveDavenport/rofi][Rofi]] is a very nice alternative to [[https://tools.suckless.org/dmenu/][dmenu]]. + +Installation: +#+begin_src bash + yay -S dmenu rofi rofi-calc #+end_src -** Run sudo commands with rofi -https://github.com/DaveDavenport/rofi/issues/584#issuecomment-384555551 - -Use ~sudo -A~, that will open a rofi prompt to ask for the password. +To be able to run sudo commands with =rofi= ([[https://github.com/DaveDavenport/rofi/issues/584#issuecomment-384555551][github issue]]), the command =sudo -A= can be used: it opens a =rofi= prompt to ask for the password. For that to work, we need to add the following code to =~/.profile=: #+begin_src bash @@ -256,64 +242,42 @@ The =askpass= script is: #+begin_src bash #!/bin/sh - # Take password prompt from STDIN, print password to STDOUT - # the sed piece just removes the colon from the provided - # prompt: rofi -p already gives us a colon rofi -dmenu \ -password \ -no-fixed-num-lines \ -p "$(printf "$1" | sed s/://)" #+end_src -* Password Manager: Pass +* =pass= - Password Manager https://www.passwordstore.org/ -** Install the pass package +Installation: #+begin_src bash -yay -S pass + yay -S pass #+end_src -** Initialize the password store as a git repository +Initialize the password store as a git repository #+begin_src bash -pass git init -pass git remote add origin https://github.com/tdehaeze/pass.git + pass git init + pass git remote add origin https://github.com/tdehaeze/pass.git #+end_src -** Gui Manager -https://github.com/IJHack/qtpass - +Gui Manager: [[https://github.com/IJHack/qtpass][qtpass]] #+begin_src bash -yay -S qtpass + yay -S qtpass #+end_src -** Integration with Rofi -https://github.com/carnager/rofi-pass - -*** Installation +Integration with Rofi: [[https://github.com/carnager/rofi-pass][rofi-pass]] #+begin_src bash yay -S rofi-pass #+end_src - Then we can add a shortcut to =rofi-pass= on i3 config. -*** Alternative -https://github.com/ibizaman/pass-clip - -#+begin_src bash - yay -S pass-clip -#+end_src - -** Integration with Browsers -This is explained [[*Integration with Pass: the password manager][here]]. - -** Integration with Git -https://github.com/languitar/pass-git-helper -*** Installation +Integration with Git: [[https://github.com/languitar/pass-git-helper][pass-git-helper]] #+begin_src bash yay -S pass-git-helper #+end_src -*** Configuration First, add the relation between repository addresses and entries in =pass=. This is done in the following config file =.config/pass-git-helper/git-pass-mapping.ini=: #+begin_src [github.com*] @@ -342,7 +306,7 @@ Bitwarden https://github.com/bitwarden/cli yay -Ss bitwarden-bin bitwarden-cli-bin #+end_src -* Bookmark Manager: Buku +* =buku= - Bookmark Manager https://github.com/jarun/Buku ** Installation @@ -355,8 +319,8 @@ https://github.com/carnager/buku_run *** Installation #+begin_src bash -wget https://raw.githubusercontent.com/carnager/buku_run/master/buku_run -o ~/.local/bin/buku_run -chmod +x ~/.local/bin/buku_run + wget https://raw.githubusercontent.com/carnager/buku_run/master/buku_run -o ~/.local/bin/buku_run + chmod +x ~/.local/bin/buku_run #+end_src *** Configuration @@ -370,8 +334,8 @@ The database is stored in =~/.local/share/buku/bookmarks.db=. We initialize a git repository in this folder: #+begin_src bash -cd ~/.local/share/buku/bookmarks.db -git init + cd ~/.local/share/buku/bookmarks.db + git init #+end_src Then we create a script that will automatically add =bookmarks.db= and push to some repository: =buku_git_push=. @@ -379,8 +343,7 @@ Then we create a script that will automatically add =bookmarks.db= and push to s To automatically run the script every day, a systemd unit is used: =~/.config/systemd/user/bukugit.timer= and =~/.config/systemd/user/bukugit.service= #+begin_src bash -systemctl start --user bukugit.timer -systemctl enable --user bukugit.timer + systemctl --user start --now bukugit.timer #+end_src ** Import Bookmarks from Firefox and Chrome @@ -392,7 +355,7 @@ To remove them, use: =buku --replace '2018dec20' ''= ** Web Interface Run: #+begin_src bash -bukuserver run --host 127.0.0.1 --port 5001 + bukuserver run --host 127.0.0.1 --port 5001 #+end_src And then browse to http://127.0.0.1:5001. @@ -410,7 +373,7 @@ And then browse to http://127.0.0.1:5001. - https://github.com/RadhiFadlillah/shiori - https://karl-voit.at/2014/08/10/bookmarks-with-orgmode/ -* Browser: qutebrowser +* =qutebrowser= - Browser https://github.com/qutebrowser/qutebrowser ** Installation @@ -457,7 +420,17 @@ config.bind('B', 'spawn buku -a {url}') /usr/share/qutebrowser/scripts/dictcli.py install en-US #+end_src -* Monitors +** =firefox= +#+begin_src bash + yay -S firefox-developer-edition +#+end_src + +Addons: +- [[https://addons.mozilla.org/fr/firefox/addon/ublock-origin/][uBlock Origin]] +- [[https://addons.mozilla.org/en-US/firefox/addon/adblock-plus/][Adblock Plus]] +- [[https://addons.mozilla.org/fr/firefox/addon/bukubrow/][Bukurow]] + +* =xrandr= - Monitor Manager #+begin_src bash yay -S xorg-xrandr arandr #+end_src @@ -465,16 +438,11 @@ config.bind('B', 'spawn buku -a {url}') [[https://wiki.archlinux.org/index.php/Xrandr][Xrandr]] is used in shell scripts ([[https://github.com/Ventto/mons][mons]] could be used as a layer on top of Xrandr). [[https://christian.amsuess.com/tools/arandr/][Arandr]] is a GUI application to manage monitors. -* Sound Setup -#+begin_src bash - yay -S pulseaudio pavucontrol -#+end_src - * Music Setup -** Sound Server - Pulse Audio +** =pulseaudio= - Sound Server https://wiki.archlinux.org/index.php/PulseAudio -Install +Installation: #+begin_src bash yay -S pulseaudio pulseaudio-alsa pulseaudio-bluetooth #+end_src @@ -483,33 +451,14 @@ If sound is not working, should run =pulseaudio --kill= to kill the deamon and t https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Running/ -** Audio Server - MPD -https://wiki.archlinux.org/index.php/Music_Player_Daemon +** =pavucontrol= - Sound Manager +=pavucontrol= is used as a sound manager: -=> Now Mopidy is used instead of MPD - -*** Installation #+begin_src bash - yay -S mpd + yay -S pavucontrol #+end_src -*** Automatic Startup -#+begin_src bash - systemctl start --user mpd.service - systemctl enable --user mpd.service -#+end_src - -*** Command line interface to MPD - MPC -https://github.com/MusicPlayerDaemon/mpc - -To install mpc: =yay -S mpc=. - -| Command | Usage | -|--------------+--------------------| -| =mpc update= | Update the library | -| =mpc rescan= | Rescan the library | - -** Audio Server with Spotify - Mopidy +** =mopidy= - Audio Server https://github.com/mopidy/mopidy https://medium.com/@theos.space/using-mopidy-with-spotify-and-ncmpcpp-44352f4a2ce8 @@ -528,62 +477,49 @@ To update local files: If mopidy is used, MPD should be disabled. (=systemctl disable --user mpd.service=) -** MPD Client - ncmpcpp +** =ncmpcpp= - MPD Client https://wiki.archlinux.org/index.php/Ncmpcpp -*** Installation +Installation: #+begin_src bash -yay -S ncmpcpp + yay -S ncmpcpp #+end_src -*** Config The main config is located here: =~/.ncmpcpp/config=. The key bindings can be configured here: =~/.ncmpcpp/bindings=. -*** Cheatsheet -https://pkgbuild.com/~jelle/ncmpcpp/ -| Command | Usage | -|---------+-------| - -** Library Manager - beets +** =beets= - Library Manager https://github.com/beetbox/beets -*** Installation +Installation; #+begin_src bash yay -S beets #+end_src -*** Configuration Configuration folder: =~/.config/beets/= -*** Cheatsheet | Command | Usage | |------------------------+-------------------------------| | =beet import = | Import folder to Music folder | * Movies -** Media Player - MPV -*** Installation +** =mpv= - Media Player +Installation: #+begin_src bash -yay -S mpv + yay -S mpv #+end_src -*** Key Bindings The configuration is set in =/.config/mpv/input.conf=. -*** CheatSheet -| Command | Usage | -|---------+-------| - -** Chromecast with CATT +** =catt= - Chromecast https://github.com/skorokithakis/catt -*** Installation +Installation: #+begin_src bash yay -S catt #+end_src -*** Usage to cast videos to chromecast +Usage to cast videos to chromecast | Command | Usage | |----------------------------------------------------------+--------------------------| | catt cast "https://www.youtube.com/watch?v=dQw4w9WgXcQ" | Cast youtube video | @@ -592,7 +528,7 @@ https://github.com/skorokithakis/catt | catt cast -s ./mysubtitle.srt /myvideo.mp4 | Add sub title | | catt cast_site https://en.wikipedia.org/wiki/Rickrolling | Cast website | -*** Usage for controlling the device +Usage for controlling the device | Command | Usage | |--------------+---------------------------------------------------------------| | ffwd | Fastforward a video by TIME duration | @@ -611,7 +547,7 @@ https://github.com/skorokithakis/catt | volumeup | Turn up volume by a DELTA increment | * Contact Manager -** Google Conctacts: Khard +** =khard= - Google Conctacts https://github.com/scheibler/khard #+begin_src bash @@ -625,7 +561,7 @@ Vdirsyncer is used for contact synchronization with Google. To search with Khard: =khard = -** Mu +** =mu= - Index Emails #+begin_src bash yay -Ss mu #+end_src @@ -633,13 +569,7 @@ To search with Khard: =khard = This looks for contacts in all indexed emails. =mu cfind = -* Connect with Phone -#+begin_src bash -yay -S kdeconnect -#+end_src - - -* Chat Application - Weechat +* =weechat= - Chat Application https://weechat.org/files/doc/stable/weechat_user.en.html https://wiki.archlinux.org/index.php/WeeChat https://gist.github.com/pascalpoitras/8406501 @@ -781,7 +711,7 @@ https://github.com/s3rvac/weechat-notify-send Weechat is started with the systemd service =weechat=. It runs weechat inside tmux. -* Redshift +* =redshift= http://jonls.dk/redshift/ #+begin_src bash @@ -791,7 +721,7 @@ http://jonls.dk/redshift/ * Mail Setup [[file:mail.org][Link]] to the mail setup. -** Synchronize Mailboxes - Mbsync +** =mbsync= - Synchronize Mailboxes http://isync.sourceforge.net/ https://wiki.archlinux.org/index.php/Isync @@ -823,7 +753,7 @@ systemctl --user enable syncmail.timer systemctl --user start syncmail.timer #+end_src -** Send Mails - Msmtp +** =msmtp= - Send Mails https://marlam.de/msmtp/ *** Installation @@ -831,10 +761,10 @@ https://marlam.de/msmtp/ yay -S msmtp #+end_src -** Mail Index, Search and Tagging - Mu +** =mu= - Mail Index, Search and Tagging https://github.com/djcb/mu -** Mail Client - NeoMutt +** =neomutt= - Mail Client https://github.com/neomutt/neomutt *** Installation @@ -860,7 +790,7 @@ https://github.com/neomutt/neomutt ** Notification system A script (=checkmail=) is used to retreive new mails and use =notify=send= is there are new received mails. -* File Manager +* =ranger=/=pcmanfm= - File Manager Configuration files: - GUI: [[file:pcmanfm.org][Pcmanfm]] - Terminal based: [[file:ranger.org][Ranger]] @@ -885,22 +815,21 @@ It works better with Urxvt. ** GUI File Manager: pcmanfm https://wiki.archlinux.org/index.php/PCManFM -* Image viewer -** sxiv +* =sxiv= - Image viewer https://github.com/muennich/sxiv https://www.youtube.com/watch?v=GYW9i_u5PYs -*** Installation +** Installation #+begin_src bash yay -S sxiv #+end_src -*** Open Gif +** Open Gif #+begin_src bash sxiv -a file.gif #+end_src -*** Cheatsheet +** Cheatsheet | Command | Usage | |--------------+--------------------------| | =-t= | Start in Thumbmail mode | @@ -910,14 +839,14 @@ https://www.youtube.com/watch?v=GYW9i_u5PYs | =\vert=, =_= | Flip the image | | =n=, =p= | Next, Previous image | -* HotKeyManager - SXHKD +* =sxhkd= - HotKey Manager #+begin_src bash yay -S sxhkd #+end_src Configuration file: [[file:sxhkd.org][SXHKD]]. -* Windows Manager - i3 +* =i3= - Windows Manager [[file:i3.org][Link]] to the documentation ** Installation @@ -928,7 +857,7 @@ Configuration file: [[file:sxhkd.org][SXHKD]]. ** Configuration =~/.i3/config= -* Polybar +* =polybar= - Top Bar https://polybar.github.io/ [[file:polybar.org][Link]] to the documentation. @@ -938,7 +867,7 @@ https://polybar.github.io/ yay -S polybar #+end_src -* Compositor - Picom +* =picom= - Compositor https://wiki.archlinux.org/index.php/Picom [[file:compositor.org][Link]] to the documentation. @@ -957,7 +886,7 @@ Compton is run from =.xprofile= config in the background: picom --daemon #+end_src -* Notification Manager - Dunst +* =dunst= - Notification Manager https://github.com/dunst-project/dunst https://wiki.archlinux.org/index.php/Dunst @@ -978,15 +907,17 @@ The number =--replace= can be used with an ID to merge notifications from the same application for instance. * Office Suite -** WPS Office +** =libreoffice= +#+begin_src bash + yay -S libreoffice-fresh libreoffice-fresh-fr +#+end_src + +** =wps= Office #+begin_src bash yay -S wps-office wps-office-extension-french-dictionary ttf-wps-fonts #+end_src -Alternatives are: -- open-office - -** Minimap SpreadSheet - SC-IM +** =sc-im= - Minimap SpreadSheet https://github.com/andmarti1424/sc-im https://www.youtube.com/watch?v=K_8_gazN7h0 @@ -996,112 +927,14 @@ It permits to open Excel files on the terminal very quickly. yay -S sc-im #+end_src -* Managing Theme -** GTK Themes -Gtk2 themes are managed using the file =~/.gtkrc-2.0= while Gtk3 themes are managed using =~/.config/gtk-3.0/settings.ini=. - -*** Gui Manager - -To customize the look of the system using GUI application, run ~lxappearance~. - -Installation: -#+begin_src bash - yay -S lxappearance -#+end_src - -*** Icons and themes -#+begin_src bash - yay -S zukitwo-themes faenza-icon-theme -#+end_src +* =blueman= - Bluetooth Manager +Bluetooth manager: https://github.com/blueman-project/blueman #+begin_src bash - yay -S arc-gtk-theme + yay -Ss blueman #+end_src -** QT Themes -Run ~qt5ct~ to manage QT Themes. - -** XFT Themes -Some configuration are located in =~/.Xresources=. - -* Advanced config -** Printer -https://wiki.archlinux.org/index.php/CUPS -Web based administration: http://localhost:631/ - -=system-config-printer= - -Check the queue -#+begin_src bash - lpq - lpq -a # on all queues -#+end_src - -Clear the queue -#+begin_src bash - lprm # remove last entry only - lprm - # remove all entries -#+end_src - -Print a file -#+begin_src bash - lpr -P printer_name filename.pdf -#+end_src - -List available printers -#+begin_src bash - lpstat -a -#+end_src - -Stats about the printer -#+begin_src bash - lpstat -p printer_name -#+end_src - -** Kernel Management -https://wiki.manjaro.org/index.php/Manjaro_Kernels - -| Command | Usage | -|------------------------------------+---------------------------------------| -| =mhwd-kernel -li= | Determine which kernel is used | -| =sudo mhwd-kernel -i linux419= | Install new kernel | -| =sudo mhwd-kernel -i linux419 rmc= | Install new kernel and remove old one | - -** Power Management Tool: Powertop -https://wiki.archlinux.org/index.php/Powertop -https://wiki.manjaro.org/index.php?title=Power_Savings - -=PowerTop= a diagnostic tool used to identify and report issues with power consumption and management. -#+begin_src bash - yay -S powertop -#+end_src - - -=TLP= is used for Power Management. -#+begin_src bash - yay -S tlp - sudo systemctl enable tlp - sudo systemctl start tlp - sudo systemctl enable tlp-sleep - sudo systemctl start tlp-sleep - sudo tlp start -#+end_src - -=Thermald= is used to automatically handle CPU frequency scaling according to system load. -#+begin_src bash - yay -S thermald - sudo systemctl enable thermald - sudo systemctl start thermald -#+end_src - -** Lid open/close -https://wiki.archlinux.org/index.php/Power_management - -Should automatic show lock screen - -=/etc/systemd/logind.conf= - -** Automatically Mount devices - Udiskie +* =udiskie= - Automatically Mount devices udiskie - Mount and unmount disks (https://github.com/coldfix/udiskie) #+begin_src bash @@ -1110,20 +943,8 @@ udiskie - Mount and unmount disks (https://github.com/coldfix/udiskie) Automatically run =udiskie= on startup. -** Format disks -https://gparted.org/ - -=sudo gparted= to format disks - -Using command line: -- https://www.digitalocean.com/community/tutorials/how-to-partition-and-format-storage-devices-in-linux - -** Bluetooth -Bluetooth manager: https://github.com/blueman-project/blueman -=blueman-manager= - * LaTeX -** Installation +Installation #+begin_src bash yay -S texlive-most #+end_src @@ -1138,29 +959,18 @@ Support for source code using minted: yay -S minted #+end_src -** Personnal classes/packages Every custom class or packages can be put under =~/.local/share/texmf/tex/latex/local/= folder. - In order for LaTeX to be aware of new packages/classes, run =sudo texhash= each time a new custom package is added. -** From screenshot to latex math formula -https://mathpix.com/ - -*** Installation -#+begin_src bash - yay -S mathpix-snipping-tool -#+end_src - * Mathematical Software ** Insect https://github.com/sharkdp/insect -*** Installation +Installation #+begin_src bash -yay -S insect + yay -S insect #+end_src -*** Usage | Command | Usage | |-----------------+--------------| | =3 m/s to km/h= | Convert Unit | @@ -1168,12 +978,11 @@ yay -S insect ** Matlab https://wiki.archlinux.org/index.php/MATLAB#Installation - [[file:matlab.org][Link]] to the configuration. -*** Installation +Installation #+begin_src bash -yay -S matlab + yay -S matlab #+end_src If there is a problem when opening a Simulink file, check the solution [[https://fr.mathworks.com/matlabcentral/answers/361053-can-t-reload-usr-local-matlab-r2017b-bin-glnxa64-libmwdastudio-so][here]]. @@ -1182,58 +991,39 @@ If there is a problem when opening a Simulink file, check the solution [[https:/ http://www.sagemath.org/ https://wiki.archlinux.org/index.php/SageMath -*** Installation +Installation #+begin_src bash -yay -S sagemath + yay -S sagemath #+end_src -*** Usage Run =sage -n jupyter= to run jupyter notebooks -*** Documentation -http://doc.sagemath.org/html/en/reference/plotting/sage/plot/plot.html#sage.plot.plot.plot -http://doc.sagemath.org/html/en/reference/calculus/sage/symbolic/expression.html -http://doc.sagemath.org/html/en/reference/calculus/sage/symbolic/assumptions.html +** Python and Jupyter-notebook * Download Manager -** Torrent Client - deluge -https://github.com/deluge-torrent/deluge -https://wiki.archlinux.org/index.php/Deluge - -*** Installation +** =aria2= and =aria2p= #+begin_src bash - yay -S deluge + yay -S aria2 #+end_src -*** Configuration -=~/.config/deluge/= - -*** Command Line Interface -https://whatbox.ca/wiki/deluge_console_documentation - -Start the daemon using =deluge -d=. -Then run the CLI client using =deluge-console=. - -** Youtube-dl #+begin_src bash -yay -S youtube-dl + python3 -m pip install --user aria2p[tui] #+end_src -*** Download best audio +** =transmission= and =tremc= #+begin_src bash - youtube-dl -f bestaudio url + yay -S tremc #+end_src -*** Download best video with audio +** =youtube-dl= #+begin_src bash - youtube-dl -f best url + yay -S youtube-dl #+end_src * Default Applications https://wiki.archlinux.org/index.php/Default_applications https://www.guyrutenberg.com/2018/01/20/set-default-application-using-xdg-mime/ -** Mailcap file -** XDG-OPEN + =~/.config/mimeapps.list= * Desktop files @@ -1242,26 +1032,15 @@ https://www.guyrutenberg.com/2018/01/20/set-default-application-using-xdg-mime/ =~/.local/share/applications/= * Bibliography Management -- https://github.com/JabRef/jabref -- https://github.com/t-wissmann/rofi-bibbrowser - I am using a plain bibtex file with =org-ref= ([[https://github.com/jkitchin/org-ref][link]]). -** Alternatives: -GUI: -- Zotero -- Mendeley - -Command line based: -- [[https://github.com/papis/papis][Papis]] - * Calendar [[file:calendar.org][Link]] to configuration -** Vdirsyncer - Sync calendars +** =vdirsyncer= - Sync calendars https://github.com/pimutils/vdirsyncer -*** Installation +Installation: #+begin_src bash yay -S vdirsyncer python-requests-oauthlib #+end_src @@ -1270,20 +1049,18 @@ https://github.com/pimutils/vdirsyncer sudo pip install requests-oauthlib #+end_src -*** Cheatsheet | Command | Usage | |-------------------+-------------| | =vdirsyncer sync= | Synchronize | -*** Automation - Systemd -First, run +Setup the =google_calendar=: #+begin_src bash vdirsyncer discover google_calendar #+end_src +And start the =systemd= timer that automatically synchronize the calendars; #+begin_src bash - systemctl --user enable vdirsyncer.timer - systemctl --user start vdirsyncer.timer + systemctl --user enable --now vdirsyncer.timer #+end_src To check the status of the service: @@ -1291,48 +1068,42 @@ To check the status of the service: systemctl --user status vdirsyncer.service #+end_src -** Calendar Client - Khal +** =khal= - Calendar Client https://github.com/pimutils/khal -*** Installation +Installation: #+begin_src bash yay -S khal #+end_src -*** Import ICS files +Import ICS files: #+begin_src bash khal import even.ics #+end_src -* RSS Reader - newsboat +* =newsboat= - RSS Reader GUI Alternatives: - http://www.rssowl.org/ - https://github.com/jangernert/FeedReader -With Emacs: -- http://pragmaticemacs.com/emacs/read-your-rss-feeds-in-emacs-with-elfeed/ -On the phone: -- https://feedly.com/i/my -** Newsboat [[file:newsboat.org][Link]] to configuration. https://github.com/newsboat/newsboat https://wiki.archlinux.org/index.php/Newsboat -*** Installation +Installation: #+begin_src bash -yay -S newboat + yay -S newboat #+end_src -*** Configuration +Configuration: https://newsboat.org/releases/2.12/docs/newsboat.html =~/.newsboat/= -*** CheatSheet https://newsboat.org/releases/2.12/docs/newsboat.html#available-operations -* Task Manager - Org Mode -* PDF Reader - Zathura +* =orgmode= - Task Manager +* =zathura= - PDF Reader https://pwmt.org/projects/zathura/ ** Installation #+begin_src bash @@ -1390,92 +1161,44 @@ pdfpc is a great tool for showing pdf presentations. It support: pdfpc filename.pdf #+end_src -* DisplayManager - None -Before, I was using lightDM, but a single tty is enough. +* Display Manager +Before, I was using =lightDM=, but a single tty is enough. However, to make tools like Anydesk or Teamviewer to work: Add "type=x11" in =/etc/pam.d/system-login=: #+begin_src conf - -session optional pam_systemd.so type=x11 + -session optional pam_systemd.so type=x11 #+end_src - When executing =loginctl session-status | grep Service= X11 should appear as initialized. - =echo $XDG_SESSION_TYPE= should show =x11= instead of =tty= now -* Theme manager -The idea would be to have a command that changes the theme of all the system. +* =gtk=/=qt= - Managing Theme +** GTK Themes +Gtk2 themes are managed using the file =~/.gtkrc-2.0= while Gtk3 themes are managed using =~/.config/gtk-3.0/settings.ini=. -There would be at least one light and one dark theme. -It seems the color is due to this part of the script. Should then source this file somehow. +*** Gui Manager +To customize the look of the system using GUI application, run ~lxappearance~. + +Installation: #+begin_src bash -BASE16_SHELL="$HOME/.base16-manager/chriskempson/base16-shell/" -[ -n "$PS1" ] && \ - [ -s "$BASE16_SHELL/profile_helper.sh" ] && \ - eval "$("$BASE16_SHELL/profile_helper.sh")" + yay -S lxappearance #+end_src -- [X] shell: https://github.com/chriskempson/base16-shell -- [X] ranger: uses colors of the shell -- [X] vim: https://github.com/chriskempson/base16-vim -- [ ] emacs: https://github.com/belak/base16-emacs -- [X] zathura: https://github.com/nicodebo/base16-zathura -- [ ] neomutt: https://github.com/josephholsten/base16-mutt -- [X] ncmpcpp: uses colors of terminal (termite) defined in =~/.config/termite/config= -- [X] polybar: uses colors of Xresources: =~/.Xressources.d/colors= -- [ ] dunst: https://github.com/khamer/base16-dunst -- [ ] fzf: https://github.com/nicodebo/base16-fzf -- [ ] i3: https://github.com/khamer/base16-i3 -- [ ] qutebrowser: https://github.com/theova/base16-qutebrowser -- [ ] rofi: https://gitlab.com/0xdec/base16-rofi -- [ ] background: use custom script -- [ ] tmux -- [ ] GUI file manager? - -Possible theme managers: -- https://github.com/mjswensen/themer -- https://github.com/dylanaraps/pywal - -** Base16 -https://github.com/chriskempson/base16 -http://chriskempson.com/projects/base16/ -https://www.youtube.com/watch?v=QcOxU1sOOuw - -*** Base16 Philosophy -Define colors according to rules: http://chriskempson.com/projects/base16/ -Then we can use these colors multiple applications. - -*** Base16-shell -https://github.com/chriskempson/base16-shell - -This changes the shell colors. This should be added to =~/.bashrc=: +*** Icons and themes #+begin_src bash -# Base16 Shell -BASE16_SHELL="$HOME/.config/base16-shell/" -[ -n "$PS1" ] && \ - [ -s "$BASE16_SHELL/profile_helper.sh" ] && \ - eval "$("$BASE16_SHELL/profile_helper.sh")" + yay -S zukitwo-themes faenza-icon-theme #+end_src -*** Base16-manager -https://github.com/AuditeMarlow/base16-manager - -This help changes many applications colors at once. - -* Streaming - OBS #+begin_src bash - yay -Ss obs-studio + yay -S arc-gtk-theme #+end_src -To share the screen as a webcam: -http://dlaw.me/webcam-spoofing-with-obs/ -#+begin_src bash - yay -S obs-v4l2sink - yay -S v4l2loopback-dkms-git - sudo modprobe v4l2loopback exclusive_caps=1 video_nr=9 -#+end_src +** QT Themes +Run ~qt5ct~ to manage QT Themes. -* Use Android phone as webcam - Droidcam +* =droidcam= - Use Android phone as webcam #+begin_src bash yay -S droidcam #+end_src @@ -1493,36 +1216,61 @@ To view the flux using mpv: mpv av://v4l2:/dev/video0 #+end_src -* Graphical Editor - Inskape +* =inkscape= - Graphical Editor - https://inkscape.org/ - Tikz -* Remote Desktop - Anydesk +#+begin_src bash + yay -S inkscape +#+end_src + +* =kdenlive= - Video Editor +[[https://kdenlive.org/fr/][kdenlive]] + +#+begin_src bash + yay -S kdenlive +#+end_src + +* =kazam= - Screen Recorder +* =obs-studio= - Live streaming and screen recording +https://github.com/obsproject/obs-studio/ + +#+begin_src bash + yay -Ss obs-studio +#+end_src + +To share the screen as a webcam: +http://dlaw.me/webcam-spoofing-with-obs/ +#+begin_src bash + yay -S obs-v4l2sink + yay -S v4l2loopback-dkms-git + sudo modprobe v4l2loopback exclusive_caps=1 video_nr=9 +#+end_src + +* =anydesk= - Remote Desktop #+begin_src bash yay -S anydesk-bin #+end_src -* Wireguard +* =wireguard= - VPN #+begin_src bash yay -S wireguard-tools #+end_src -* VPN Setup with NordVPN +* =nordvpn= - VPN https://aur.archlinux.org/packages/nordvpn-bin/ https://wiki.archlinux.org/index.php/NordVPN -** Installation +Installation: #+begin_src bash yay -S nordvpn-bin #+end_src -** Configuration +Configuration: #+begin_src bash - sudo systemctl enable nordvpnd.service - sudo systemctl start nordvpnd.service + sudo systemctl enable --now nordvpnd.service #+end_src -** Usage | Command | Usage | |---------------------------+-------| | =nordvpn login= | | @@ -1531,18 +1279,8 @@ https://wiki.archlinux.org/index.php/NordVPN | =nordvpn status= | | | =nordvpn countries= | | -** Alternative: Use NordVPM with openVPN Instead -https://github.com/nstinus/nordvpn -https://github.com/jotyGill/openpyn-nordvpn -https://nordvpn.com/fr/tutorials/linux/openvpn/ - * Others -** Wallpaper: =xwallpaper= -** Interact with API -- GUI: https://github.com/getinsomnia/insomnia -- CLI: https://github.com/jakubroztocil/httpie - -** Take Screenshot +** =maim=/=flameshot= - Take Screenshots - https://github.com/naelstrof/maim - https://github.com/lupoDharkael/flameshot @@ -1550,51 +1288,108 @@ https://nordvpn.com/fr/tutorials/linux/openvpn/ yay -S maim flameshot #+end_src -** Show pressed keys +** =screenkey= - Show pressed keys #+begin_src bash yay -S screenkey #+end_src -** File transfer +** =croc= - File transfer https://github.com/schollz/croc #+begin_src bash yay -S croc #+end_src -** Utilities -- https://github.com/BurntSushi/ripgrep +** Find Files + +#+begin_src bash + yay -S fd ripgrep fzf +#+end_src + +** PDF/Image Utilities - https://github.com/dawbarton/pdf2svg - https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ - https://github.com/Airblader/unclutter-xfixes #+begin_src bash - yay -S fd ripgrep pdf2svg pdftk unclutter pdfarranger + yay -S pdf2svg pdftk unclutter pdfarranger imagemagick #+end_src - ** Trash =trash-cli= is used to manage the trash. It is integrated with Ranger. +#+begin_src bash + yay -S trash-cli +#+end_src + +** Google translate from the command line +#+begin_src bash + yay -S translate-shell +#+end_src + +#+begin_src bash + trans englishwork en:fr +#+end_src + +** Show information about the machine +[[https://github.com/dylanaraps/neofetch][neofetch]] + +#+begin_src bash + yay -S neofetch +#+end_src + +* Printer +https://wiki.archlinux.org/index.php/CUPS +Web based administration: http://localhost:631/ + +=system-config-printer= + +Check the queue +#+begin_src bash + lpq + lpq -a # on all queues +#+end_src + +Clear the queue +#+begin_src bash + lprm # remove last entry only + lprm - # remove all entries +#+end_src + +Print a file +#+begin_src bash + lpr -P printer_name filename.pdf +#+end_src + +List available printers +#+begin_src bash + lpstat -a +#+end_src + +Stats about the printer +#+begin_src bash + lpstat -p printer_name +#+end_src + +* Kernel Management +https://wiki.manjaro.org/index.php/Manjaro_Kernels + +| Command | Usage | +|------------------------------------+---------------------------------------| +| =mhwd-kernel -li= | Determine which kernel is used | +| =sudo mhwd-kernel -i linux419= | Install new kernel | +| =sudo mhwd-kernel -i linux419 rmc= | Install new kernel and remove old one | + +* Format disks +https://gparted.org/ + +=sudo gparted= to format disks + +Using command line: +- https://www.digitalocean.com/community/tutorials/how-to-partition-and-format-storage-devices-in-linux + * Usefull commands -** Find files or directories -- https://github.com/sharkdp/fd -- https://github.com/BurntSushi/ripgrep -- https://github.com/ggreer/the\_silver\_searcher -- find -- fzf - -** Show informations about the machine -- [[https://github.com/dylanaraps/neofetch][neofetch]] - -** Work with PDF -=pdftk= - -** Separate PDF -=pdfseparate -f 1 -l 6 file.pdf split%d.pdf= -Will create =split1.pdf= to =split6.pdf= files corresponding to correct pages of =file.pdf=. - ** Readline https://wiki.archlinux.org/index.php/Keyboard_shortcuts @@ -1642,48 +1437,27 @@ https://wiki.archlinux.org/index.php/Keyboard_shortcuts | =Alt+?= | List all possible completions | | =Alt+*= | Insert all possible completions | -** Google translate from the command line -#+begin_src bash - yay -S translate-shell -#+end_src - -#+begin_src bash - trans englishwork en:fr -#+end_src - ** Others | [[https://github.com/tldr-pages/tldr][tldr]] | Community-driven man pages | -| [[https://github.com/dutchcoders/transfer.sh][transfer.sh]] | upload and share files from the command line | -| [[https://github.com/timvisee/ffsend][ffsend]] | share files from the command line | | [[https://github.com/chubin/wttr.in][wttr.in]] | weather in terminal | | [[https://github.com/michael-lazar/rtv][rtv]] | Reddit in terminal | | awk | https://linuxhandbook.com/awk-command-tutorial/ | | [[https://github.com/rupa/z][z]] | Jump around | | [[https://github.com/nvbn/thefuck][thefuck]] | Magnificent app which corrects your previous console command | -| [[https://github.com/mrzool/bash-sensible][bash-sensible]] | An attempt at saner Bash defaults | -| [[https://github.com/greg-js/arch-wiki-man][awman]] | Arch Wiki man pages - Arch wiki offline | | [[https://github.com/amanusk/s-tui/][s-tui]] | Terminal based CPU stress and monitoring utility | | [[https://github.com/nicolargo/glances][glances]] | A top/htop alternative | | [[https://github.com/asciinema/asciinema][asciinema]] | Reccord you terminal | | [[https://dev.yorhel.nl/ncdu][ncdu]] | See what takes place on the disk | -| [[https://github.com/haikarainen/light][light]] | Program to easily change brightness on backlight-controllers | -| [[https://github.com/naelstrof/maim][maim]] | Take screenshots | | [[https://github.com/sharkdp/bat][bat]] | cat alternative | | [[https://github.com/dalance/procs][procs]] | ps alternative | | [[https://github.com/chmln/sd][sd]] | sed alternative | -| [[https://github.com/smxi/inxi][inxi]] | CLI tool to get system information | -|-----------------------------------+-------------------------------------------| -| Command | Description | -|-----------------------------------+-------------------------------------------| | =meteo= | Get the meteo | | =sudo cputhrottle PID %PROC= | Limiter l'accès au proc pour un processus | | =nmap -sP “192.168.1.*"= | Check all ip addresses on local netword | -| =rsync -a --progress source dest= | Copy folders with stats | | =du -sh folder= | Return the size of the folder | | =df -h= | Report disk usage | -|-----------------------------------+-------------------------------------------| ** Archive and Extract Use =apack= and =aunpack=: @@ -1702,16 +1476,52 @@ Use =apack= and =aunpack=: | =ethtooo eth0= | Tool to show ethernet status | | =netstat -tulp= | List all active listening ports | -* Enable TRIM (SSD only) +* After Install +Enable TRIM (SSD only) #+begin_src bash sudo systemctl enable --now fstrim.timer #+end_src -* Set the fastest mirror for Pacman +Set the fastest mirror for Pacman #+begin_src bash sudo pacman-mirrors --fasttrack #+end_src +* Configuration for Laptops +** Power Management Tool: Powertop +https://wiki.archlinux.org/index.php/Powertop +https://wiki.manjaro.org/index.php?title=Power_Savings + +=PowerTop= a diagnostic tool used to identify and report issues with power consumption and management. +#+begin_src bash + yay -S powertop +#+end_src + + +=TLP= is used for Power Management. +#+begin_src bash + yay -S tlp + sudo systemctl enable tlp + sudo systemctl start tlp + sudo systemctl enable tlp-sleep + sudo systemctl start tlp-sleep + sudo tlp start +#+end_src + +=Thermald= is used to automatically handle CPU frequency scaling according to system load. +#+begin_src bash + yay -S thermald + sudo systemctl enable thermald + sudo systemctl start thermald +#+end_src + +** Lid open/close +https://wiki.archlinux.org/index.php/Power_management + +Should automatic show lock screen + +=/etc/systemd/logind.conf= + * Some notes - Systemd To improve the startup time. @@ -1743,46 +1553,33 @@ To see next timers - https://wiki.archlinux.org/index.php/List_of_applications - https://ambrevar.xyz/power-apps/ - https://enchiridion.red/2019/1/18/desktop-apps/ + * List of all the install programs -** 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 - -** LaTeX ** Mutt -neomutt - Teaching an Old Dog New Tricks -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 -ripmime - Extract attachments out of MIME encoded email packages -shared-mime-info - Database of common MIME types +| =neomutt= | Teaching an Old Dog New Tricks | +| =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 | +| =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 +| =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 | @@ -1795,27 +1592,21 @@ arduino-mk - Makefile for Arduino sketches | =atool= =zip= | 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 +| =wget= | Internet file retriever | +| =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 | ** 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 +| =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 | @@ -1823,14 +1614,4 @@ moreutils - Collection of tools that nobody wrote when UNIX was young | =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 | -| =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 | -| =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 | diff --git a/music.org b/music.org index ad9d5be..cb6da4b 100644 --- a/music.org +++ b/music.org @@ -128,7 +128,7 @@ Sorting by tracking number and then title #+begin_src conf def_key "q" - run_external_command "if [ $TMUX ]; then tmux detach; fi" + run_external_command "sh -c 'if [ $TMUX ] ; then tmux detach; fi'" def_key "Q" quit def_key "g" diff --git a/notifications.org b/notifications.org index 4e76d67..5d40dce 100644 --- a/notifications.org +++ b/notifications.org @@ -7,6 +7,7 @@ #+begin_src conf [global] #+end_src + ** Display #+begin_src conf # Which monitor should the notifications be displayed on. diff --git a/pcmanfm.org b/pcmanfm.org index 98d2c0f..2d58041 100644 --- a/pcmanfm.org +++ b/pcmanfm.org @@ -1,4 +1,4 @@ -#+TITLE: PCMANFM +#+TITLE: PCManFM #+SETUPFILE: ./setup/org-setup-file.org #+PROPERTY: header-args:bash :comments both #+PROPERTY: header-args:bash+ :mkdirp yes diff --git a/qutebrowser.org b/qutebrowser.org index c527f87..763832d 100644 --- a/qutebrowser.org +++ b/qutebrowser.org @@ -577,7 +577,7 @@ Send to Emacs #+begin_src bash :tangle ~/.config/qutebrowser/userscripts/html-to-pdf.sh filename=$(rofi -p "filename" -dmenu -lines 1) - if [ -n "filename" ]; then + if [ -n "$filename" ]; then cd ~/Pictures/ && \ percollate pdf --css "@page { size: A4 portrait }" --output "$filename.pdf" "$QUTE_URL" && \ dunstify "Percollate" "Successfully saved to pdf" diff --git a/ranger.org b/ranger.org index 334537f..08ccbef 100644 --- a/ranger.org +++ b/ranger.org @@ -1,4 +1,4 @@ -#+TITLE: Ranger Configuration +#+TITLE: Ranger #+SETUPFILE: ./setup/org-setup-file.org * Documentation diff --git a/rofi.org b/rofi.org index 22a9309..500e31c 100644 --- a/rofi.org +++ b/rofi.org @@ -57,49 +57,49 @@ #+END_SRC * Theme - :PROPERTIES: - :header-args: :tangle ~/.config/rofimenu/rofimenu.rasi - :header-args+: :comments none :mkdirp yes - :END: +:PROPERTIES: +:header-args: :tangle ~/.config/rofimenu/rofimenu.rasi +:header-args+: :comments none :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"; + 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; + background: #292f34FF; + background-color: #292f3400; + foreground: #F6F9FFFF; + selected: #1ABB9BFF; + selected-foreground: @foreground; //// uncomment to match Adapta Nokto theme // background: #222D32E8; @@ -109,51 +109,50 @@ // 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; + 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; + font: "xos4 Terminus 18px"; + text-color: @foreground; //// PADDING ETC //// - margin: 0px; - border: 0px; - padding: 0px; - spacing: 0px; - elementpadding: 2px 0px; - elementmargin: 0px 2px; - listmargin: 0px 2px 0px 0px; + 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; + windowwidth: 40ch; + buttonwidth: 18ch; + lines: 12; + fixed-height: false; //// POSITION //// - location: northwest; - anchor: northwest; - x-offset: 0px; - y-offset: 24px; + location: northwest; + anchor: northwest; + x-offset: 0px; + y-offset: 24px; //// LAYOUT //// - scrollbar: true; + scrollbar: true; //// uncomment to get submenu-like style - menustyle: [ sb-mainbox ]; - buttonpadding: 2px 1ch; - button-bg: @background; - dynamic: true; + menustyle: [ sb-mainbox ]; + buttonpadding: 2px 1ch; + button-bg: @background; + dynamic: true; //// uncomment to get tabs-like style // menustyle: [ tb-mainbox ]; @@ -162,85 +161,85 @@ } ////////////////////////////////////////// window { - width: @windowwidth; - children: @menustyle; + width: @windowwidth; + children: @menustyle; } //submenu-style sb-mainbox { - orientation: horizontal; - children: [ sidebar, vertibox ]; + orientation: horizontal; + children: [ sidebar, vertibox ]; } //tabs-style tb-mainbox { - orientation: vertical; - children: [ inputbar, horibox ]; - background-color: @background; + orientation: vertical; + children: [ inputbar, horibox ]; + background-color: @background; } //desktop-submenu dt-mainbox { - orientation: vertical; - children: [ boxdummy, sb-mainbox ]; + orientation: vertical; + children: [ boxdummy, sb-mainbox ]; } horibox { - orientation: horizontal; - children: [ listview, sidebar ]; + orientation: horizontal; + children: [ listview, sidebar ]; } sidebar { - orientation: vertical; + orientation: vertical; } button { - horizontal-align: 0; - padding: @buttonpadding; - width: @buttonwidth; - background-color: @button-bg; - expand: false; + horizontal-align: 0; + padding: @buttonpadding; + width: @buttonwidth; + background-color: @button-bg; + expand: false; } vertibox { - orientation: vertical; - children: [ inputbar, listview ]; - background-color: @background; + orientation: vertical; + children: [ inputbar, listview ]; + background-color: @background; } prompt { - enabled: false; + enabled: false; } listview { - margin: @listmargin; + margin: @listmargin; } scrollbar { - handle-width: 0.5ch; - handle-color: @selected; + handle-width: 0.5ch; + handle-color: @selected; } boxdummy { - enabled: false; - orientation: vertical; - expand: false; - children: [ textboxdummy ]; + enabled: false; + orientation: vertical; + expand: false; + children: [ textboxdummy ]; } textboxdummy { - str: " "; + str: " "; } element, inputbar, textboxdummy { - padding: @elementpadding; - margin: @elementmargin; - width: @elementwidth; + padding: @elementpadding; + margin: @elementmargin; + width: @elementwidth; } element.normal.active, element.alternate.active { - background-color: @active-background; - text-color: @selected-foreground; + background-color: @active-background; + text-color: @selected-foreground; } element.selected, button.selected { - background-color: @selected; - text-color: @selected-foreground; + background-color: @selected; + text-color: @selected-foreground; } element.normal.urgent, element.alternate.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; + background-color: @urgent-background; + text-color: @urgent-foreground; } element.selected.urgent { - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; } #+END_SRC diff --git a/windows.org b/windows.org index b98a7fe..cd2df26 100644 --- a/windows.org +++ b/windows.org @@ -23,7 +23,7 @@ First install Chocolatey using a PowerShell as administrator: Then, install all required software using one command: #+begin_src bash - choco install firefox 7zip.install vlc git.install malwarebytes sumatrapdf.install steam anydesk discord f.lux cmder syncthing cura ccleaner + choco install -y firefox 7zip.install vlc git.install malwarebytes sumatrapdf.install steam anydesk discord f.lux cmder cura ccleaner neovim #+end_src * Debloat windows10 @@ -34,6 +34,57 @@ Run a PowerShell with administrative rights and run: iex ((New-Object System.Net.WebClient).DownloadString('https://git.io/debloat')) #+end_src +* SSHFS +** SSH Setup +Install OpenSSH from =chocolatey= as the one packed with Windows is quite old ([[https://blog.frankfu.com.au/2019/03/21/moving-from-windows-1809s-openssh-to-openssh-portable/][link]]): +#+begin_src bash + choco install openssh --package-parameters="/SSHAgentFeature" +#+end_src + +Then generate the keys: +#+begin_src bash + ssh-keygen +#+end_src + +Start the SSH-Agent to automatically unlock the keys: +#+begin_src bash + # Start the service + Start-Service ssh-agent + + # This should return a status of Running + Get-Service ssh-agent + + # Now load your key files into ssh-agent + ssh-add +#+end_src + +Copy the public key with: +#+begin_src bash + Get-Content -Path $HOME\.ssh\id_rsa.pub | Set-Clipboard +#+end_src + +And add it to =~/.ssh/authorized_keys= on the server side. + +Finally, it should be possible to ssh to the server. + +** SSHFS +Install [[https://github.com/billziss-gh/sshfs-win][sshfs-win]]. + +Run the =Registry Editor=, and find =Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WinFsp\Services\sshfs.kr=, then edit =CommandLine=: +#+begin_src conf + svc %1 %2 %U -o create_dir_umask=000 -o create_file_umask=111 -o umask=000 +#+end_src + +Then, to mount the network drive using =sshfs=: +#+begin_src bash + net use X: \\sshfs.kr\thomas@192.168.1.150\srv\storage /persistent:yes +#+end_src + +To un-mount it: +#+begin_src bash + net use X: /delete +#+end_src + * Software Setup ** Syncthing https://docs.syncthing.net/users/autostart.html#autostart-windows-startup