From 8f39bb691a2f3766057e61928ca8e51578448081 Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Tue, 26 May 2020 08:40:15 +0200 Subject: [PATCH] Org-Publish --- docs/applications.html | 439 +- docs/bash.html | 734 ++- docs/binaries-private.html | 157 + docs/binaries.html | 1694 ++++--- docs/calendar.html | 318 +- docs/config.html | 393 +- docs/data.html | 7955 +++++++++++++++++++++------------ docs/doom.html | 6200 +++++++++++-------------- docs/emacs-library-babel.html | 115 + docs/emacs-snippets.html | 812 ++++ docs/i3.html | 319 +- docs/index.html | 216 +- docs/install.html | 1229 +++-- docs/mail.html | 1443 +++--- docs/matlab.html | 341 +- docs/music.html | 355 +- docs/newsboat.html | 912 ++-- docs/notifications.html | 2286 +--------- docs/polybar.html | 1226 +++-- docs/qutebrowser.html | 785 ++-- docs/ranger.html | 1053 ++--- docs/sxhkd.html | 505 +-- docs/systemd.html | 714 ++- docs/torrent.html | 350 +- docs/xconfig.html | 862 ++-- 25 files changed, 14130 insertions(+), 17283 deletions(-) create mode 100644 docs/binaries-private.html create mode 100644 docs/emacs-library-babel.html create mode 100644 docs/emacs-snippets.html diff --git a/docs/applications.html b/docs/applications.html index 683daf8..2980f12 100644 --- a/docs/applications.html +++ b/docs/applications.html @@ -1,229 +1,19 @@ - - + - Desktop file for the applications - -
@@ -240,7 +30,6 @@
  • Neomutt
  • Weechat
  • Matlab
  • -
  • Zathura
  • Neovim
  • Images
  • Org-Protocol
  • @@ -255,33 +44,33 @@

    Mime Applications

    -
    [Default Applications]
    -text/plain=nvim.desktop
    -x-scheme-handler/magnet=torrent.desktop;
    -text/x-shellscript=nvim.desktop;
    -image/png=img.desktop;
    -image/jpeg=img.desktop;
    -image/gif=img.desktop;
    -application/rss+xml=rss.desktop
    -x-scheme-handler/mailto=neomutt.desktop
    -message/rfc822=neomutt.desktop
    -application/x-bittorrent=deluge.desktop
    -application/pdf=zathura.desktop
    -x-scheme-handler/http=qutebrowser.desktop
    -x-scheme-handler/https=qutebrowser.desktop
    -x-scheme-handler/ftp=qutebrowser.desktop
    -x-scheme-handler/chrome=qutebrowser.desktop
    -text/html=qutebrowser.desktop
    -application/x-extension-htm=qutebrowser.desktop
    -application/x-extension-html=qutebrowser.desktop
    -application/x-extension-shtml=qutebrowser.desktop
    -application/xhtml+xml=qutebrowser.desktop
    -application/x-extension-xhtml=qutebrowser.desktop
    -application/x-extension-xht=qutebrowser.desktop
    +
    [Default Applications]
    +text/plain=nvim.desktop
    +x-scheme-handler/magnet=torrent.desktop;
    +text/x-shellscript=nvim.desktop;
    +image/png=img.desktop;
    +image/jpeg=img.desktop;
    +image/gif=img.desktop;
    +application/rss+xml=rss.desktop
    +x-scheme-handler/mailto=neomutt.desktop
    +message/rfc822=neomutt.desktop
    +application/x-bittorrent=deluge.desktop
    +application/pdf=zathura.desktop
    +x-scheme-handler/http=qutebrowser.desktop
    +x-scheme-handler/https=qutebrowser.desktop
    +x-scheme-handler/ftp=qutebrowser.desktop
    +x-scheme-handler/chrome=qutebrowser.desktop
    +text/html=qutebrowser.desktop
    +application/x-extension-htm=qutebrowser.desktop
    +application/x-extension-html=qutebrowser.desktop
    +application/x-extension-shtml=qutebrowser.desktop
    +application/xhtml+xml=qutebrowser.desktop
    +application/x-extension-xhtml=qutebrowser.desktop
    +application/x-extension-xht=qutebrowser.desktop
     
    -[Added Associations]
    -text/plain=mousepad.desktop;
    -application/x-bittorrent=deluge.desktop;
    +[Added Associations]
    +text/plain=mousepad.desktop;
    +application/x-bittorrent=deluge.desktop;
     
    @@ -291,15 +80,15 @@

    Neomutt

    -
    [Desktop Entry]
    -Name=Neomutt
    -GenericName=Email client
    -Exec=$TERMINAL -e neomutt %u
    -Type=Application
    -Icon=/usr/share/icons/Papirus/64x64/apps/mutt.svg
    -Categories=Network;Email;
    -MimeType=message/rfc822;x-scheme-handler/mailto;application/x-xpinstall;
    -StartupNotify=true
    +
    [Desktop Entry]
    +Name=Neomutt
    +GenericName=Email client
    +Exec=$TERMINAL -e neomutt %u
    +Type=Application
    +Icon=/usr/share/icons/Papirus/64x64/apps/mutt.svg
    +Categories=Network;Email;
    +MimeType=message/rfc822;x-scheme-handler/mailto;application/x-xpinstall;
    +StartupNotify=true
     
    @@ -309,18 +98,18 @@

    Weechat

    -
    [Desktop Entry]
    -Encoding=UTF-8
    -MultipleArgs=false
    -Terminal=false
    -Exec=$TERMINAL --class=WeeChat -e 'weechat'
    -StartupWMClass=WeeChat
    -Icon=/usr/share/icons/Papirus/64x64/apps/weechat.svg
    -Type=Application
    -Categories=Network;IRCClient;
    -StartupNotify=true
    -Name=WeeChat
    -GenericName=IRC Client
    +
    [Desktop Entry]
    +Encoding=UTF-8
    +MultipleArgs=false
    +Terminal=false
    +Exec=$TERMINAL --class=WeeChat -e 'weechat'
    +StartupWMClass=WeeChat
    +Icon=/usr/share/icons/Papirus/64x64/apps/weechat.svg
    +Type=Application
    +Categories=Network;IRCClient;
    +StartupNotify=true
    +Name=WeeChat
    +GenericName=IRC Client
     
    @@ -330,36 +119,17 @@

    Matlab

    -
    [Desktop Entry]
    -Version=R2019b
    -Type=Application
    -Terminal=false
    -MimeType=text/x-matlab
    -Exec=/usr/local/MATLAB/R2019b/bin/matlab -desktop
    -Name=MATLAB
    -Icon=matlab
    -Categories=Development;Math;Science
    -Comment=Scientific computing environment
    -StartupNotify=true
    -
    -
    -
    -
    - -
    -

    Zathura

    -
    -
    -
    [Desktop Entry]
    -Version=1.0
    -Type=Application
    -Name=Zathura
    -Comment=A minimalistic document viewer
    -Exec=zathura %U
    -Icon=/usr/share/icons/Papirus/64x64/apps/zathura.svg
    -Terminal=false
    -Categories=Office;Viewer;
    -Keywords=PDF;PS;PostScript;DjVU;document;presentation;viewer;
    +
    [Desktop Entry]
    +Version=R2020a
    +Type=Application
    +Terminal=false
    +MimeType=text/x-matlab
    +Exec=/usr/local/MATLAB/R2020a/bin/matlab -desktop -nosplash
    +Name=MATLAB
    +Icon=matlab
    +Categories=Development;Math;Science
    +Comment=Scientific computing environment
    +StartupNotify=true
     
    @@ -369,18 +139,18 @@

    Neovim

    -
    [Desktop Entry]
    -Name=Neovim
    -GenericName=Text Editor
    -Comment=Edit text files
    -Exec=nvim %F
    -Terminal=true
    -Type=Application
    -Keywords=Text;editor;
    -Icon=/usr/share/icons/Papirus/48x48/apps/nvim.svg
    -Categories=Utility;TextEditor;
    -StartupNotify=false
    -MimeType=text/english;text/plain;text/x-makefile;
    +
    [Desktop Entry]
    +Name=Neovim
    +GenericName=Text Editor
    +Comment=Edit text files
    +Exec=nvim %F
    +Terminal=true
    +Type=Application
    +Keywords=Text;editor;
    +Icon=/usr/share/icons/Papirus/48x48/apps/nvim.svg
    +Categories=Utility;TextEditor;
    +StartupNotify=false
    +MimeType=text/english;text/plain;text/x-makefile;
     
    @@ -390,10 +160,10 @@

    Images

    -
    [Desktop Entry]
    -Type=Application
    -Name=Image viewer
    -Exec=/usr/bin/sxiv -a %u
    +
    [Desktop Entry]
    +Type=Application
    +Name=Image viewer
    +Exec=/usr/bin/sxiv -a %u
     
    @@ -403,30 +173,31 @@

    Org-Protocol

    -
    [Desktop Entry]
    -Name=org-protocol
    -Exec=emacsclient %u
    -Type=Application
    -Terminal=false
    -Categories=System;
    -MimeType=x-scheme-handler/org-protocol;
    +
    [Desktop Entry]
    +Name=org-protocol
    +Exec=emacsclient %u
    +Icon=emacs-icon
    +Type=Application
    +Terminal=false
    +MimeType=x-scheme-handler/org-protocol;
     
    +

    Ranger

    -
    [Desktop Entry]
    -Type=Application
    -Name=ranger
    -Comment=Launches the ranger file manager
    -Icon=utilities-terminal
    -Terminal=true
    -Exec=ranger
    -Categories=ConsoleOnly;System;FileTools;FileManager
    -MimeType=inode/directory;inode/mount-point;x-scheme-handler/ssh;x-scheme-handler/smb;x-scheme-handler/nfs;x-scheme-handler/ftp;
    +
    [Desktop Entry]
    +Type=Application
    +Name=ranger
    +Comment=Launches the ranger file manager
    +Icon=utilities-terminal
    +Terminal=true
    +Exec=ranger
    +Categories=ConsoleOnly;System;FileTools;FileManager
    +MimeType=inode/directory;inode/mount-point;x-scheme-handler/ssh;x-scheme-handler/smb;x-scheme-handler/nfs;x-scheme-handler/ftp;
     
    @@ -435,14 +206,14 @@

    Emacs Client

    -
    [Desktop Entry]
    -Name=Emacs Client
    -Exec=emacsclient -c %u
    -Icon=emacs-icon
    -Type=Application
    -Terminal=false
    -MimeType=x-scheme-handler/org-protocol;
    -NoDisplay=true
    +
    [Desktop Entry]
    +Name=Emacs Client
    +Exec=emacsclient -c %u
    +Icon=emacs-icon
    +Type=Application
    +Terminal=false
    +MimeType=x-scheme-handler/org-protocol;
    +NoDisplay=true
     
    @@ -452,10 +223,10 @@

    Torrent with Transmission

    -
    [Desktop Entry]
    -Type=Application
    -Name=Torrent
    -Exec=tremc %U
    +
    [Desktop Entry]
    +Type=Application
    +Name=Torrent
    +Exec=tremc %U
     
    @@ -463,7 +234,7 @@

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:40

    diff --git a/docs/bash.html b/docs/bash.html index badcc32..8c17f6e 100644 --- a/docs/bash.html +++ b/docs/bash.html @@ -1,229 +1,19 @@ - - + - Bash Configuration - -
    @@ -260,9 +50,6 @@
  • Functions
  • Bash History
  • -
  • Starship Prompt
  • Bash Profile
  • @@ -283,15 +69,18 @@
  • Default
  • Exports
  • Path
  • +
  • Input
  • @@ -305,7 +94,7 @@

    What does that do?

    -
    [[ $- != *i* ]] && return
    +
    [[ $- != *i* ]] && return
     
    @@ -315,7 +104,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
     
    @@ -325,8 +114,8 @@

    Ignore case for autocompletion

    -
    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"
     
    @@ -336,9 +125,9 @@

    Use Color

    -
    use_color=true
    -alias ls='ls -hN --color=auto --group-directories-first'
    -alias grep='grep --colour=auto'
    +
    use_color=true
    +alias ls='ls -hN --color=auto --group-directories-first'
    +alias grep='grep --colour=auto'
     
    @@ -348,42 +137,42 @@

    Set colorful PS1 only on colorful terminals.

    -dircolors –print-database uses its own built-in database instead of using /etc/DIRCOLORS. Try to use the external file first to take advantage of user additions. Use internal bash globbing instead of external grep binary. +dircolors –print-database uses its own built-in database instead of using /etc/DIR_COLORS. Try to use the external file first to take advantage of user additions. Use internal bash globbing instead of external grep binary.

    -
    safe_term=${TERM//[^[:alnum:]]/?}   # sanitize TERM
    -match_lhs=""
    -[[ -f ~/.dir_colors   ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
    -[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"
    -[[ -z ${match_lhs}    ]] \
    -  && type -P dircolors >/dev/null \
    -  && match_lhs=$(dircolors --print-database)
    -[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true
    +
    safe_term=${TERM//[^[:alnum:]]/?}   # sanitize TERM
    +match_lhs=""
    +[[ -f ~/.dir_colors   ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
    +[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"
    +[[ -z ${match_lhs}    ]] \
    +  && type -P dircolors >/dev/null \
    +  && match_lhs=$(dircolors --print-database)
    +[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true
     
    -if ${use_color} ; then
    -  # Enable colors for ls, etc.  Prefer ~/.dir_colors #64489
    -  if type -P dircolors >/dev/null ; then
    -    if [[ -f ~/.dir_colors ]] ; then
    -      eval $(dircolors -b ~/.dir_colors)
    -    elif [[ -f /etc/DIR_COLORS ]] ; then
    -      eval $(dircolors -b /etc/DIR_COLORS)
    -    fi
    -  fi
    +if ${use_color} ; then
    +  # Enable colors for ls, etc.  Prefer ~/.dir_colors #64489
    +  if type -P dircolors >/dev/null ; then
    +    if [[ -f ~/.dir_colors ]] ; then
    +      eval $(dircolors -b ~/.dir_colors)
    +    elif [[ -f /etc/DIR_COLORS ]] ; then
    +      eval $(dircolors -b /etc/DIR_COLORS)
    +    fi
    +  fi
     
    -  if [[ ${EUID} == 0 ]] ; then
    -    PS1='\[\033[01;31m\][\h\[\033[01;36m\] \W\[\033[01;31m\]]\$\[\033[00m\] '
    -  else
    -    PS1='\[\033[01;32m\][\u@\h\[\033[01;37m\] \W\[\033[01;32m\]]\$\[\033[00m\] '
    -  fi
    -else
    -  if [[ ${EUID} == 0 ]] ; then
    -    # show root@ when we don't have colors
    -    PS1='\u@\h \W \$ '
    -  else
    -    PS1='\u@\h \w \$ '
    -  fi
    -fi
    +  if [[ ${EUID} == 0 ]] ; then
    +    PS1='\[\033[01;31m\][\h\[\033[01;36m\] \W\[\033[01;31m\]]\$\[\033[00m\] '
    +  else
    +    PS1='\[\033[01;32m\][\u@\h\[\033[01;37m\] \W\[\033[01;32m\]]\$\[\033[00m\] '
    +  fi
    +else
    +  if [[ ${EUID} == 0 ]] ; then
    +    # show root@ when we don't have colors
    +    PS1='\u@\h \W \$ '
    +  else
    +    PS1='\u@\h \w \$ '
    +  fi
    +fi
     
    @@ -393,22 +182,22 @@ dircolors –print-database uses its own built-in database instead of using

    Some config

    -
    unset use_color safe_term match_lhs sh
    +
    unset use_color safe_term match_lhs sh
     
    -xhost +local:root > /dev/null 2>&1
    +xhost +local:root > /dev/null 2>&1
     
    -complete -cf sudo
    +complete -cf sudo
     
    -# Line wrap on window resize
    -shopt -s checkwinsize
    +# Line wrap on window resize
    +shopt -s checkwinsize
     
    -shopt -s expand_aliases
    +shopt -s expand_aliases
     
    -# Auto "cd" when entering just a path
    -shopt -s autocd
    +# Auto "cd" when entering just a path
    +shopt -s autocd
     
    -# Enable history appending instead of overwriting
    -shopt -s histappend
    +# Enable history appending instead of overwriting
    +shopt -s histappend
     
    @@ -418,7 +207,7 @@ xhost +local:root > /dev/null 2Prompt
    -
    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)\]"
     
    @@ -428,12 +217,12 @@ xhost +local:root > /dev/null 2SSH Agent
    -
    # if ! pgrep -u "$USER" ssh-agent > /dev/null; then
    -#     ssh-agent > "$XDG_RUNTIME_DIR/ssh-agent.env"
    -# fi
    -# if [[ ! "$SSH_AUTH_SOCK" ]]; then
    -#     eval "$(<"$XDG_RUNTIME_DIR/ssh-agent.env")"
    -# fi
    +
    # if ! pgrep -u "$USER" ssh-agent > /dev/null; then
    +#     ssh-agent > "$XDG_RUNTIME_DIR/ssh-agent.env"
    +# fi
    +# if [[ ! "$SSH_AUTH_SOCK" ]]; then
    +#     eval "$(<"$XDG_RUNTIME_DIR/ssh-agent.env")"
    +# fi
     
    @@ -443,8 +232,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'
     
    @@ -458,11 +247,11 @@ xhost +local:root > /dev/null 2Better defaults for some commands
    -
    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 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'
     
    @@ -472,15 +261,15 @@ 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 y="yadm"
    -alias o="xdg-open"
    -alias x="sxiv -ft *"
    +
    alias r="ranger"
    +alias t="tmux"
    +alias v="nvim"
    +alias sv='sudo -E nvim'
    +alias g="git"
    +alias m="neomutt"
    +alias y="yadm"
    +alias o="xdg-open"
    +alias x="sxiv -ft *"
     
    @@ -490,7 +279,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.
     
    @@ -500,8 +289,8 @@ xhost +local:root > /dev/null 2Magit
    -
    # alias magit="emacsclient -create-frame --alternate-editor=\"\" --eval '(magit-status)'"
    -alias magit="nvim -c MagitOnly"
    +
    # alias magit="emacsclient -create-frame --alternate-editor=\"\" --eval '(magit-status)'"
    +alias magit="nvim -c MagitOnly"
     
    @@ -511,8 +300,8 @@ xhost +local:root > /dev/null 2Vim-like
    -
    alias :q=exit
    -alias :e=nvim
    +
    alias :q=exit
    +alias :e=nvim
     
    @@ -522,7 +311,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}'
     
    @@ -537,107 +326,32 @@ xhost +local:root > /dev/null 2Display 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
    -}
    -
    -
    -
    - - -
    -

    Meteo

    -
    -
    -
    meteo() {
    -  if [ -n "$*" ]; then
    -    address="wttr.in/"
    -    address+=$*
    -    address+="?lang=fr"
    -    curl "$address"
    -  else
    -    address="wttr.in/"
    -    address+="?lang=fr"
    -    curl "$address"
    -  fi
    -}
    -alias meteo=meteo
    -
    -
    -
    -
    - -
    -

    Upload using transfer.sh

    -
    -
    -
    upload() {
    -  # write to output to tmpfile because of progress bar
    -  tmpfile=$(mktemp -t transferXXX)
    -  # basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9]/-/g')
    -  curl --progress-bar --upload-file "$1" "https://transfer.sh/" >> $tmpfile;
    -  cat $tmpfile | xsel -ib;
    -  echo "Copied:" $(cat $tmpfile);
    -  rm -f $tmpfile;
    -}
    -alias upload=upload
    -
    -
    -
    -
    - -
    -

    Extract archive

    -
    -

    -usage: ex <file> -

    - -
    -
    ex ()
    -{
    -  if [ -f $1 ] ; then
    -    case $1 in
    -      *.tar.bz2)   tar xjf $1   ;;
    -      *.tar.gz)    tar xzf $1   ;;
    -      *.bz2)       bunzip2 $1   ;;
    -      *.rar)       unrar x $1     ;;
    -      *.gz)        gunzip $1    ;;
    -      *.tar)       tar xf $1    ;;
    -      *.tbz2)      tar xjf $1   ;;
    -      *.tgz)       tar xzf $1   ;;
    -      *.zip)       unzip $1     ;;
    -      *.Z)         uncompress $1;;
    -      *.7z)        7z x $1      ;;
    -      *)           echo "'$1' cannot be extracted via ex()" ;;
    -    esac
    -  else
    -    echo "'$1' is not a valid file"
    -  fi
    -}
    +            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
    +}
     
    @@ -654,9 +368,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;
    +}
     
    @@ -666,9 +380,9 @@ small enough for one screen.

    Create a new directory and enter it

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

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

    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
    +}
     
    @@ -714,21 +428,21 @@ small enough for one screen. https://doronbehar.com/articles/using-kdeconnect-to-comfortably-send-sms-messages-from-the-shell/#kdeconnects-builtin-sms-interface

    -
    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
    -        # echo "${name}"$'\t'"${phone_number}"$'\t'"${phone_type}" > ${_KDECONNECT_SMS_LAST_RECIPIENT}
    -        kdeconnect-cli --send-sms "${args}" --destination "${phone_number}" --device 4de3b5de2264a17c
    -        # kdeconnect-cli --device ${_KDECONNECT_DEFAULT_DEVICE} --send-sms "${args}" --destination "${phone_number}" && \
    -        # echo sent sms message to ${name} | fribidi
    -    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
    +        # echo "${name}"$'\t'"${phone_number}"$'\t'"${phone_type}" > ${_KDECONNECT_SMS_LAST_RECIPIENT}
    +        kdeconnect-cli --send-sms "${args}" --destination "${phone_number}" --device 4de3b5de2264a17c
    +        # kdeconnect-cli --device ${_KDECONNECT_DEFAULT_DEVICE} --send-sms "${args}" --destination "${phone_number}" && \
    +            # echo sent sms message to ${name} | fribidi
    +    fi
    +}
     
     
    @@ -743,9 +457,9 @@ Undocumented feature which sets the size to “unlimited”. -
    export HISTFILESIZE=
    -export HISTSIZE=
    -export HISTTIMEFORMAT="[%F %T] "
    +
    export HISTFILESIZE=
    +export HISTSIZE=
    +export HISTTIMEFORMAT="[%F %T] "
     
    @@ -754,7 +468,7 @@ Change the file location because certain bash sessions truncate .bash_hist

    -
    export HISTFILE=~/.bash_eternal_history
    +
    export HISTFILE=~/.bash_eternal_history
     
    @@ -763,17 +477,7 @@ Force prompt to write history after every command.
    -
    PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
    -
    - - - - -
    -

    Starship Prompt

    -
    -
    -
    eval "$(starship init bash)"
    +
    PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
     
    @@ -784,8 +488,8 @@ Force prompt to write history after every command.
    Bash Profile
    -
    [[ -f ~/.profile ]] && . ~/.profile
    -[[ -f ~/.bashrc ]] && . ~/.bashrc
    +
    [[ -f ~/.profile ]] && . ~/.profile
    +[[ -f ~/.bashrc ]] && . ~/.bashrc
     
    @@ -800,8 +504,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"
     
    @@ -811,7 +515,7 @@ Force prompt to write history after every command.
    Gui program to ask for sudo password
    -
    export SUDO_ASKPASS=~/bin/askpass-rofi
    +
    export SUDO_ASKPASS=~/.local/bin/askpass-rofi
     
    @@ -821,10 +525,10 @@ Force prompt to write history after every command.
    Gnome Keyring Daemon
    -
    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
     
    @@ -834,11 +538,11 @@ Force prompt to write history after every command.
    Default
    -
    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"
     
    @@ -847,17 +551,25 @@ Force prompt to write history after every command.

    Exports

    +
    +
    +

    Term

    +
    +

    +This is important for termite to work when sshing in remote machines. +

    -
    export TERM=xterm-256color
    +
    export TERM=xterm-color
     
    +
    + +
    + +
    +

    Input

    +
    +

    +Completion: +

    +
    +
    # Single tab for autocompletion
    +set show-all-if-ambiguous on
    +
    +# Ignore case for completion
    +set completion-ignore-case on
    +
    +
    + +

    +vi mode: +

    +
    +
    # VI mode (works in bash and zsh)
    +set editing-mode vi
    +
    +# 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
    +
    +
    + +

    +Key-bindings for vi-mode: +

    +
    +
    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"
    +
    +
    + +

    +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
    +
    +
    + +

    +Don’t echo ^C after Ctrl+C is pressed. +

    +
    +
    set echo-control-characters off
    +
    +
    +
    +

    Author: Dehaeze Thomas

    -

    Created: 2020-03-19 jeu. 10:38

    +

    Created: 2020-05-26 mar. 08:39

    diff --git a/docs/binaries-private.html b/docs/binaries-private.html new file mode 100644 index 0000000..d15b098 --- /dev/null +++ b/docs/binaries-private.html @@ -0,0 +1,157 @@ + + + + + + +My own specific binaries + + + + + + + + + + +
    +

    My own specific binaries

    + + +
    +

    remote-desktop - Remote Desktop Connect

    +
    +
    +
    computer=$(echo -e 'RNICE\nPCMEL1\nPCNASS1\nPCMEG01' | dmenu -p 'Computer:' -l 20);
    +
    +case $computer in
    +    PCMEL1)
    +          rdesktop -a 16 -P -z -x m -r sound:off -g "80%" -u "ESRF\OPPEL" -p $(pass esrf/PCMEL1/OPPEL | sed -n 1p) pcmel1
    +          ;;
    +    PCMEG01)
    +          rdesktop -a 16 -P -z -x m -r sound:off -g "80%" -u "ESRF\DEHAEZE" -p $(pass ssl.esrf.fr/dehaeze | sed -n 1p) pcmeg01
    +          ;;
    +    PCNASS1)
    +          rdesktop -a 16 -P -z -x m -r sound:off -g "80%" -u "ESRF\DEHAEZE" -p $(pass ssl.esrf.fr/dehaeze | sed -n 1p) pcnass1
    +          ;;
    +    RNICE)
    +          echo "Not yet implemented"
    +          ;;
    +    *)
    +          echo "Not existing"
    +          ;;
    +esac
    +
    +
    +
    +
    + +
    +

    print-rnice - Print on Rnice

    +
    +
    +
    nbpage=$(echo -e '1\n2\n4' | dmenu -p 'Number of pages per sheet' -l 20);
    +sides=$(echo -e 'one-sided\ntwo-sided-long-edge\ntwo-sided-short-edge' | dmenu -p 'Two Sided:' -l 20);
    +
    +# First copy the file to Rnice
    +if sshpass -p "$(pass ssl.esrf.fr/dehaeze | sed -n 1p)" scp $1 dehaeze@rnice:~/Downloads/; then
    +  # Then print on Rnice
    +  sshpass -p "$(pass ssl.esrf.fr/dehaeze | sed -n 1p)" ssh dehaeze@rnice "lpr -o media=A4 -o sides=$sides -o number-up=$nbpage -P ctb110c1u ~/Downloads/$1";
    +  # Finally, delete the file
    +else
    +  echo "Command Failed"
    +fi
    +
    +
    +
    +
    + +
    +

    tmp14 - Mount/Umount tmp_14_days folder

    +
    +
    +
    if [ $1 == "mount" ]; then
    +    if sshfs -o allow_other,default_permissions -p 5022 dehaeze@firewall.esrf.fr:/tmp_14_days/ ~/mnt/ESRF; then
    +        dunstify --replace=58249 'ESRF TMP ' 'Successfully mounted'
    +    else
    +        dunstify --replace=58249 --urgency=critical 'ESRF TMP ' 'Error while mounted'
    +    fi
    +elif [ $1 == "umount" ]; then
    +    if umount /home/thomas/mnt/ESRF/; then
    +        dunstify --replace=58249 'ESRF TMP ' 'Successfully unmounted'
    +    else
    +        dunstify --replace=58249 --urgency=critical 'ESRF TMP ' 'Error while unmounted'
    +    fi
    +fi
    +
    +
    +
    +
    + + +
    +

    nas - Interact with the NAS

    +
    +

    +As an alternative, sshfs can be used: +

    +
    +
    sshfs -o allow_other,default_permissions nas:/Data ~/mnt/NAS
    +
    +
    + +
    +
    if [ $1 == "mount" ]; then
    +    if mount /home/thomas/mnt/NAS/; then
    +        dunstify --replace=58249 'NAS ' 'Successfully mounted'
    +    else
    +        dunstify --replace=58249 --urgency=critical 'NAS ' 'Error while mounted'
    +    fi
    +elif [ $1 == "umount" ]; then
    +    if umount /home/thomas/mnt/NAS/; then
    +        dunstify --replace=58249 'NAS ' 'Successfully unmounted'
    +    else
    +        dunstify --replace=58249 --urgency=critical 'NAS ' 'Error while unmounted'
    +    fi
    +fi
    +
    +
    +
    +
    + +
    +

    torrent-add - Download Torrent

    +
    +
    +
    transmission-remote 82.64.103.2:9091 --auth tdehaeze:$(pass nas/transmission | sed -n 1p) -a $1 && \
    +    dunstify 'Torrent' 'Successfully added' || \
    +    dunstify 'Torrent' 'Error'
    +
    +
    +
    +
    +
    +
    +
    +

    Author: Dehaeze Thomas

    +

    Created: 2020-05-26 mar. 08:39

    +
    + + diff --git a/docs/binaries.html b/docs/binaries.html index 4fa35fc..f637348 100644 --- a/docs/binaries.html +++ b/docs/binaries.html @@ -1,229 +1,19 @@ - - + - Binaries - - @@ -268,94 +63,72 @@ Script taken from Luke Smith.

    -
    twoscreen() { # If multi-monitor is selected and there are two screens.
    +
    twoscreen() { # If multi-monitor is selected and there are two screens.
     
    -    mirror=$(printf "no\\nyes" | dmenu -i -p "Mirror displays?")
    -    # Mirror displays using native resolution of external display and a scaled
    -    # version for the internal display
    -    if [ "$mirror" = "yes" ]; then
    -        external=$(echo "$screens" | dmenu -i -p "Optimize resolution for:")
    -        internal=$(echo "$screens" | grep -v "$external")
    +    mirror=$(printf "no\\nyes" | dmenu -i -p "Mirror displays?")
    +    # Mirror displays using native resolution of external display and a scaled
    +    # version for the internal display
    +    if [ "$mirror" = "yes" ]; then
    +        external=$(echo "$screens" | dmenu -i -p "Optimize resolution for:")
    +        internal=$(echo "$screens" | grep -v "$external")
     
    -        res_external=$(xrandr --query | sed -n "/^$external/,/\+/p" | \
    -                           tail -n 1 | awk '{print $1}')
    -        res_internal=$(xrandr --query | sed -n "/^$internal/,/\+/p" | \
    -                           tail -n 1 | awk '{print $1}')
    +        res_external=$(xrandr --query | sed -n "/^$external/,/\+/p" | \
    +                           tail -n 1 | awk '{print $1}')
    +        res_internal=$(xrandr --query | sed -n "/^$internal/,/\+/p" | \
    +                           tail -n 1 | awk '{print $1}')
     
    -        res_ext_x=$(echo $res_external | sed 's/x.*//')
    -        res_ext_y=$(echo $res_external | sed 's/.*x//')
    -        res_int_x=$(echo $res_internal | sed 's/x.*//')
    -        res_int_y=$(echo $res_internal | sed 's/.*x//')
    +        res_ext_x=$(echo $res_external | sed 's/x.*//')
    +        res_ext_y=$(echo $res_external | sed 's/.*x//')
    +        res_int_x=$(echo $res_internal | sed 's/x.*//')
    +        res_int_y=$(echo $res_internal | sed 's/.*x//')
     
    -        scale_x=$(echo "$res_ext_x / $res_int_x" | bc -l)
    -        scale_y=$(echo "$res_ext_y / $res_int_y" | bc -l)
    +        scale_x=$(echo "$res_ext_x / $res_int_x" | bc -l)
    +        scale_y=$(echo "$res_ext_y / $res_int_y" | bc -l)
     
    -        xrandr --output "$external" --auto --scale 1.0x1.0 \
    -               --output "$internal" --auto --same-as "$external" \
    -               --scale "$scale_x"x"$scale_y"
    -    else
    +        xrandr --output "$external" --auto --scale 1.0x1.0 \
    +               --output "$internal" --auto --same-as "$external" \
    +               --scale "$scale_x"x"$scale_y"
    +    else
     
    -        primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
    -        secondary=$(echo "$screens" | grep -v "$primary")
    -        direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?")
    -        xrandr --output "$primary" --auto --scale 1.0x1.0 --output "$secondary" --"$direction"-of "$primary" --auto --scale 1.0x1.0
    -    fi
    -}
    +        primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
    +        secondary=$(echo "$screens" | grep -v "$primary")
    +        direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?")
    +        xrandr --output "$primary" --auto --scale 1.0x1.0 --output "$secondary" --"$direction"-of "$primary" --auto --scale 1.0x1.0
    +    fi
    +}
     
    -morescreen() { # If multi-monitor is selected and there are more than two screens.
    -    primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
    -    secondary=$(echo "$screens" | grep -v "$primary" | dmenu -i -p "Select secondary display:")
    -    direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?")
    -    tertiary=$(echo "$screens" | grep -v "$primary" | grep -v "$secondary" | dmenu -i -p "Select third display:")
    -    xrandr --output "$primary" --auto --output "$secondary" --"$direction"-of "$primary" --auto --output "$tertiary" --"$(printf "left\\nright" | grep -v "$direction")"-of "$primary" --auto
    -}
    +morescreen() { # If multi-monitor is selected and there are more than two screens.
    +    primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
    +    secondary=$(echo "$screens" | grep -v "$primary" | dmenu -i -p "Select secondary display:")
    +    direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?")
    +    tertiary=$(echo "$screens" | grep -v "$primary" | grep -v "$secondary" | dmenu -i -p "Select third display:")
    +    xrandr --output "$primary" --auto --output "$secondary" --"$direction"-of "$primary" --auto --output "$tertiary" --"$(printf "left\\nright" | grep -v "$direction")"-of "$primary" --auto
    +}
     
    -multimon() { # Multi-monitor handler.
    -    case "$(echo "$screens" | wc -l)" in
    -        1) xrandr $(echo "$allposs" | grep -v "$screens" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ') ;;
    -        2) twoscreen ;;
    +multimon() { # Multi-monitor handler.
    +    case "$(echo "$screens" | wc -l)" in
    +        1) xrandr $(echo "$allposs" | grep -v "$screens" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ') ;;
    +        2) twoscreen ;;
             *) morescreen ;;
    -    esac ;}
    +    esac ;}
     
    -# Get all possible displays
    -allposs=$(xrandr -q | grep "connected")
    +# Get all possible displays
    +allposs=$(xrandr -q | grep "connected")
     
    -# Get all connected screens.
    -screens=$(echo "$allposs" | grep " connected" | awk '{print $1}')
    +# Get all connected screens.
    +screens=$(echo "$allposs" | grep " connected" | awk '{print $1}')
     
    -# Get user choice including multi-monitor and manual selection:
    -chosen=$(printf "%s\\ncancel\\nmulti-monitor\\nmanual selection" "$screens" | dmenu -i -p "Select display arangement:") &&
    -    case "$chosen" in
    -        "cancel") exit ;;
    -        "manual selection") arandr ; exit ;;
    -        "multi-monitor") multimon ;;
    -        *) xrandr --output "$chosen" --auto --scale 1.0x1.0 $(echo "$allposs" | grep -v "$chosen" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ') ;;
    -    esac
    +# Get user choice including multi-monitor and manual selection:
    +chosen=$(printf "%s\\ncancel\\nmulti-monitor\\nmanual selection" "$screens" | dmenu -i -p "Select display arangement:") &&
    +    case "$chosen" in
    +        "cancel") exit ;;
    +        "manual selection") arandr ; exit ;;
    +        "multi-monitor") multimon ;;
    +        *) xrandr --output "$chosen" --auto --scale 1.0x1.0 $(echo "$allposs" | grep -v "$chosen" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ') ;;
    +    esac
     
    -$HOME/.config/polybar/scripts/launch.sh # restart polybar
    -pgrep -x dunst >/dev/null && killall dunst && setsid dunst & # Restart dunst to ensure proper location on screen
    -
    -
    - - - -
    -

    TODO getbib

    -
    -
    -
    [ -z "$1" ] && echo "Give either a pdf file or a DOI as an argument." && exit
    -
    -if [ -f "$1" ]; then
    -    # Try to get DOI from pdfinfo or pdftotext output.
    -    doi=$(pdfinfo "$1" | grep -io "doi:.*") ||
    -        doi=$(pdftotext "$1" 2>/dev/null - | grep -io "doi:.*" -m 1) ||
    -        exit 1
    -else
    -    doi="$1"
    -fi
    -
    -# Check crossref.org for the bib citation.
    -curl -s "http://api.crossref.org/works/$doi/transform/application/x-bibtex" -w "\\n"
    +$HOME/.config/polybar/scripts/launch.sh # restart polybar
    +pgrep -x dunst >/dev/null && killall dunst && setsid dunst & # Restart dunst to ensure proper location on screen
     
    @@ -365,13 +138,13 @@ $HOME/.config/polybar/scripts/launch.sh <

    vpntoggle - Connect to VPN using NordVPN

    -
    if [[ $(nordvpn status) == *"Connected"* ]]; then
    -  nordvpn disconnect && dunstify --replace=23198 "VPN" "Disconnected";
    -else
    -  country=`cat ~/bin/nordvpn_countries.txt | sed 's/\s*\t\s*/ /g ; s/\s/\n/g ; s/_/ /g ; /^[a-zA-Z]/!d ; s/\(.*\)/\L\1/' | rofi -i -dmenu | sed 's/\s/_/g'`;
    -  dunstify --replace=23198 "VPN" "Connecting to $country...";
    -  nordvpn connect $country && dunstify --replace=23198 "VPN" "Connected to $country";
    -fi
    +
    if [[ $(nordvpn status) == *"Connected"* ]]; then
    +  nordvpn disconnect && dunstify --replace=23198 "VPN" "Disconnected";
    +else
    +  country=`cat ~/.local/data/nordvpn_countries.txt | sed 's/\s*\t\s*/ /g ; s/\s/\n/g ; s/_/ /g ; /^[a-zA-Z]/!d ; s/\(.*\)/\L\1/' | rofi -i -dmenu | sed 's/\s/_/g'`;
    +  dunstify --replace=23198 "VPN" "Connecting to $country...";
    +  nordvpn connect $country && dunstify --replace=23198 "VPN" "Connected to $country";
    +fi
     
    @@ -381,415 +154,392 @@ $HOME/.config/polybar/scripts/launch.sh <

    bukurun - Open link from Buku

    -
    _rofi () {
    -    rofi -dmenu -i -no-levenshtein-sort -width 1000 "$@"
    -}
    +
    _rofi () {
    +    rofi -dmenu -i -no-levenshtein-sort -width 1000 "$@"
    +}
     
    -# display settings
    -display_type=1
    -max_str_width=80
    +# display settings
    +display_type=1
    +max_str_width=80
     
    -# keybindings
    -switch_view="Alt+Tab"
    -new_bookmark="Alt+n"
    -actions="Alt+a"
    -edit="Alt+e"
    -delete="Alt+d"
    +# keybindings
    +switch_view="Alt+Tab"
    +new_bookmark="Alt+n"
    +actions="Alt+a"
    +edit="Alt+e"
    +delete="Alt+d"
     
    -# colors
    -help_color="#334433"
    +# colors
    +help_color="#334433"
     
    -# source global config
    -if [[ -f /etc/buku_run.config ]]
    -then
    -  source /etc/buku_run.config
    -fi
    +# source global config
    +if [[ -f /etc/buku_run.config ]]
    +then
    +    source /etc/buku_run.config
    +fi
     
    -# source local config:
    -if [[ -z $XDG_CONFIG_DIR ]]
    -then
    -  if [[ -f $HOME/.config/buku_run/config ]]
    -  then
    -    source $HOME/.config/buku_run/config
    -  else
    -    echo "User config file \'~/.config/buku_run/config\' not found. using global config"
    -  fi
    -else
    -  if [[ -f "${XDG_CONFIG_DIR}/buku_run/config" ]]
    -  then
    -    source "${XDG_CONFIG_DIR}/buku_run/config"
    -  else
    -    echo "User config file \'~/.config/buku_run/config\' not found. using global config"
    -  fi
    -fi
    +# source local config:
    +if [[ -z $XDG_CONFIG_DIR ]]
    +then
    +    if [[ -f $HOME/.config/buku_run/config ]]
    +    then
    +        source $HOME/.config/buku_run/config
    +    else
    +        echo "User config file \'~/.config/buku_run/config\' not found. using global config"
    +    fi
    +else
    +    if [[ -f "${XDG_CONFIG_DIR}/buku_run/config" ]]
    +    then
    +        source "${XDG_CONFIG_DIR}/buku_run/config"
    +    else
    +        echo "User config file \'~/.config/buku_run/config\' not found. using global config"
    +    fi
    +fi
     
     
    -main () {
    -    HELP="Welcome to Buku. Use <span color='${help_color}'>${new_bookmark}</span> to add a new Bookmark
    -Use <span color='${help_color}'>${switch_view}</span> to switch View. <span color='${help_color}'>${actions}</span> for actions"
    -    if [[ $mode == "bookmarks" ]]; then
    -        content=$(parseBuku)
    -        menu=$(echo "${content}" | _rofi -p '> ' -filter "${filter}" -mesg "${HELP}" -kb-custom-1 "${new_bookmark}" -kb-custom-2 "${switch_view}" -kb-custom-3 "${actions}" -kb-custom-4 "${edit}" -kb-custom-5 "${delete}")
    -    elif [[ $mode == "tags" ]]; then
    -        menu=$(buku --np --st | awk '{$NF=""; print $0}' | cut -d ' ' -f2-  | _rofi -p '> ' -mesg "${HELP}" -kb-custom-1 "${new_bookmark}" -kb-custom-2 "${switch_view}" -kb-custom-3 "${actions}" -kb-custom-4 "${edit}" -kb-custom-5 "${delete}")
    -    fi
    -    val=$?
    -    if [[ $val -eq 1 ]]; then
    -        exit
    -    elif [[ $val -eq 12 ]]; then
    +main () {
    +    HELP="Welcome to Buku. Use <span color='${help_color}'>${new_bookmark}</span> to add a new Bookmark
    +Use <span color='${help_color}'>${switch_view}</span> to switch View. <span color='${help_color}'>${actions}</span> for actions"
    +    if [[ $mode == "bookmarks" ]]; then
    +        content=$(parseBuku)
    +        menu=$(echo "${content}" | _rofi -p '> ' -filter "${filter}" -mesg "${HELP}" -kb-custom-1 "${new_bookmark}" -kb-custom-2 "${switch_view}" -kb-custom-3 "${actions}" -kb-custom-4 "${edit}" -kb-custom-5 "${delete}")
    +    elif [[ $mode == "tags" ]]; then
    +        menu=$(buku --np --st | awk '{$NF=""; print $0}' | cut -d ' ' -f2-  | _rofi -p '> ' -mesg "${HELP}" -kb-custom-1 "${new_bookmark}" -kb-custom-2 "${switch_view}" -kb-custom-3 "${actions}" -kb-custom-4 "${edit}" -kb-custom-5 "${delete}")
    +    fi
    +    val=$?
    +    if [[ $val -eq 1 ]]; then
    +        exit
    +    elif [[ $val -eq 12 ]]; then
             optionsMenu
    -    elif [[ $val -eq 10 ]]; then
    +    elif [[ $val -eq 10 ]]; then
             addMark
    -    elif [[ $val -eq 14 ]]; then
    +    elif [[ $val -eq 14 ]]; then
             deleteMenu
    -    elif [[ $val -eq 13 ]]; then
    +    elif [[ $val -eq 13 ]]; then
             editMenu
    -    elif [[ $val -eq 11 ]]; then
    -        if [[ $mode == "bookmarks" ]]; then
    -            export mode="tags"
    -            mode=tags main
    -        elif [[ $mode == "tags" ]]; then
    -            export mode="bookmarks"
    -            mode=bookmarks main
    -        fi
    -    elif [[ $val -eq 0 ]]; then
    -        if [[ $mode == "bookmarks" ]]; then
    -            id=$(getId "$content" "$menu")
    -            for bm in ${id}; do
    -                buku -o "${bm}"
    -            done
    -        elif [[ $mode == "tags" ]]; then
    -            filter="${menu}" mode="bookmarks" main
    -        fi
    -    fi
    -}
    +    elif [[ $val -eq 11 ]]; then
    +        if [[ $mode == "bookmarks" ]]; then
    +            export mode="tags"
    +            mode=tags main
    +        elif [[ $mode == "tags" ]]; then
    +            export mode="bookmarks"
    +            mode=bookmarks main
    +        fi
    +    elif [[ $val -eq 0 ]]; then
    +        if [[ $mode == "bookmarks" ]]; then
    +            id=$(getId "$content" "$menu")
    +            for bm in ${id}; do
    +                buku -o "${bm}"
    +            done
    +        elif [[ $mode == "tags" ]]; then
    +            filter="${menu}" mode="bookmarks" main
    +        fi
    +    fi
    +}
     
    -optionsMenu () {
    -    if [[ $mode == "bookmarks" ]]; then
    -        askmenu=$(echo -e "< Return\n---\n1. Edit\n2. Delete" | _rofi -p '> ' -mesg "Choose Action for bookmark")
    -        val=$?
    -        if [[ $val -eq 1 ]]; then
    -            exit
    -        elif [[ $val -eq 0 ]]; then
    -            if [[ $askmenu == "< Return" ]]; then
    -                export mode=bookmarks
    +optionsMenu () {
    +    if [[ $mode == "bookmarks" ]]; then
    +        askmenu=$(echo -e "< Return\n---\n1. Edit\n2. Delete" | _rofi -p '> ' -mesg "Choose Action for bookmark")
    +        val=$?
    +        if [[ $val -eq 1 ]]; then
    +            exit
    +        elif [[ $val -eq 0 ]]; then
    +            if [[ $askmenu == "< Return" ]]; then
    +                export mode=bookmarks
                     main
    -            elif [[ $askmenu == "1. Edit" ]]; then
    +            elif [[ $askmenu == "1. Edit" ]]; then
                     editMenu
    -            elif [[ $askmenu == "2. Delete" ]]; then
    +            elif [[ $askmenu == "2. Delete" ]]; then
                     deleteMenu
    -            fi
    -        fi
    -    elif [[ $mode == "tags" ]]; then
    -        askmenu=$(echo -e "< Return\n---\n1. Replace Tag\n2. Delete Tag" | _rofi -p '> ' -mesg "Choose Action for tag \"${menu}\"")
    -        val=$?
    -        if [[ $val -eq 1 ]]; then
    -            exit
    -        elif [[ $val -eq 0 ]]; then
    -            if [[ $askmenu == "< Return" ]]; then
    -                export mode=tags
    +            fi
    +        fi
    +    elif [[ $mode == "tags" ]]; then
    +        askmenu=$(echo -e "< Return\n---\n1. Replace Tag\n2. Delete Tag" | _rofi -p '> ' -mesg "Choose Action for tag \"${menu}\"")
    +        val=$?
    +        if [[ $val -eq 1 ]]; then
    +            exit
    +        elif [[ $val -eq 0 ]]; then
    +            if [[ $askmenu == "< Return" ]]; then
    +                export mode=tags
                     main
    -            elif [[ $askmenu == "1. Replace Tag" ]]; then
    -                newtag=$(echo | _rofi -p '> ' -mesg "Enter new tag name for tag \"${menu}\"")
    -                val=$?
    -                if [[ $val -eq 1 ]]; then
    -                    exit
    -                elif [[ $val -eq 0 ]]; then
    -                    if [[ $newtag == "" ]]; then
    -                        mode=tags main
    -                    else
    -                        buku -r "${menu}" "${newtag}"
    -                        mode=tags main
    -                    fi
    -                fi
    -            elif [[ $askmenu == "2. Delete Tag" ]]; then
    -                delask=$(echo -e "1. Yes\n2. No" | _rofi -p '> ' -mesg "Really delete tag?")
    -                val=$?
    -                if [[ $val -eq 1 ]]; then
    -                    exit
    -                elif [[ $val -eq 0 ]]; then
    -                    if [[ $delask == "1. Yes" ]]; then
    -                        buku -r "${menu}"
    -                        mode=tags main
    -                    elif [[ $delask == "2. No" ]]; then
    -                        mode=tags main
    -                    fi
    -                fi
    -            fi
    -        fi
    -    fi
    -}
    +            elif [[ $askmenu == "1. Replace Tag" ]]; then
    +                newtag=$(echo | _rofi -p '> ' -mesg "Enter new tag name for tag \"${menu}\"")
    +                val=$?
    +                if [[ $val -eq 1 ]]; then
    +                    exit
    +                elif [[ $val -eq 0 ]]; then
    +                    if [[ $newtag == "" ]]; then
    +                        mode=tags main
    +                    else
    +                        buku -r "${menu}" "${newtag}"
    +                        mode=tags main
    +                    fi
    +                fi
    +            elif [[ $askmenu == "2. Delete Tag" ]]; then
    +                delask=$(echo -e "1. Yes\n2. No" | _rofi -p '> ' -mesg "Really delete tag?")
    +                val=$?
    +                if [[ $val -eq 1 ]]; then
    +                    exit
    +                elif [[ $val -eq 0 ]]; then
    +                    if [[ $delask == "1. Yes" ]]; then
    +                        buku -r "${menu}"
    +                        mode=tags main
    +                    elif [[ $delask == "2. No" ]]; then
    +                        mode=tags main
    +                    fi
    +                fi
    +            fi
    +        fi
    +    fi
    +}
     
    -deleteMenu () {
    -    id=$(getId "$content" "$menu")
    -    delask=$(echo -e "1. Yes\n2. No" | _rofi -p '> ' -mesg "Really delete bookmark?")
    -    val=$?
    -    if [[ $val -eq 1 ]]; then
    -        exit
    -    elif [[ $val -eq 0 ]]; then
    -        if [[ $delask == "1. Yes" ]]; then
    -            buku -d ${id} --tacit
    -            mode=bookmarks main
    -        elif [[ $delask == "2. No" ]]; then
    +deleteMenu () {
    +    id=$(getId "$content" "$menu")
    +    delask=$(echo -e "1. Yes\n2. No" | _rofi -p '> ' -mesg "Really delete bookmark?")
    +    val=$?
    +    if [[ $val -eq 1 ]]; then
    +        exit
    +    elif [[ $val -eq 0 ]]; then
    +        if [[ $delask == "1. Yes" ]]; then
    +            buku -d ${id} --tacit
    +            mode=bookmarks main
    +        elif [[ $delask == "2. No" ]]; then
                 optionsMenu
    -        fi
    -    fi
    -}
    +        fi
    +    fi
    +}
     
    -editMenu () {
    -    id=$(getId "$content" "$menu")
    -    title="$(getTitleFromId $id)"
    -    bookmark="$(getUrlFromId $id)"
    -    tags="$(getTagsFromId $id)"
    -    content=$(echo -e "1. title: $title\n2. url: $bookmark\n3. tags: $tags")
    -    editmenu=$(echo -e "< Return\n---\n${content}" | _rofi -p '> ')
    -    val=$?
    -    if [[ $val -eq 1 ]]; then
    -        exit
    -    elif [[ $val -eq 0 ]]; then
    -        if [[ $editmenu == "< Return" ]]; then
    +editMenu () {
    +    id=$(getId "$content" "$menu")
    +    title="$(getTitleFromId $id)"
    +    bookmark="$(getUrlFromId $id)"
    +    tags="$(getTagsFromId $id)"
    +    content=$(echo -e "1. title: $title\n2. url: $bookmark\n3. tags: $tags")
    +    editmenu=$(echo -e "< Return\n---\n${content}" | _rofi -p '> ')
    +    val=$?
    +    if [[ $val -eq 1 ]]; then
    +        exit
    +    elif [[ $val -eq 0 ]]; then
    +        if [[ $editmenu == "< Return" ]]; then
                 main
    -        elif [[ $editmenu == "tags: NOTAG" ]]; then
    +        elif [[ $editmenu == "tags: NOTAG" ]]; then
                 addTags --update
    -        elif [[ $editmenu =~ tags:* ]]; then
    -            tags="${tags}" editTags
    -        elif [[ $editmenu =~ url:* ]]; then
    +        elif [[ $editmenu =~ tags:* ]]; then
    +            tags="${tags}" editTags
    +        elif [[ $editmenu =~ url:* ]]; then
                 editBookmark
    -        elif [[ $editmenu =~ title:* ]]; then
    +        elif [[ $editmenu =~ title:* ]]; then
                 editTitle
    -        fi
    -    fi
    -}
    +        fi
    +    fi
    +}
     
    -editTags () {
    -    edittagsmenu=$(echo | _rofi -filter "${tags}" -p '> ' -mesg "Edit Tags and hit Enter")
    -    val=$?
    -    if [[ $val -eq 1 ]]; then
    -        exit
    -    elif [[ $val -eq 0 ]]; then
    -        buku -u ${id} --tag "${edittagsmenu}"
    -    fi
    -    mode=bookmarks main
    -}
    +editTags () {
    +    edittagsmenu=$(echo | _rofi -filter "${tags}" -p '> ' -mesg "Edit Tags and hit Enter")
    +    val=$?
    +    if [[ $val -eq 1 ]]; then
    +        exit
    +    elif [[ $val -eq 0 ]]; then
    +        buku -u ${id} --tag "${edittagsmenu}"
    +    fi
    +    mode=bookmarks main
    +}
     
    -editBookmark () {
    -    bmarkmenu=$(echo "" | _rofi -p "> " -filter "${bookmark}" -mesg "Edit Bookmark and hit Enter")
    -    val=$?
    -    if [[ $val -eq 1 ]]; then
    -        exit
    -    elif [[ $val -eq 0 ]]; then
    -        if [[ $bmarkmenu == "http"* ]]; then
    -            buku -u "${id}" --url "${bmarkmenu}"
    -        else
    -            echo "" | rofi -e "Not a valid URI, Make sure URLs start with http"
    +editBookmark () {
    +    bmarkmenu=$(echo "" | _rofi -p "> " -filter "${bookmark}" -mesg "Edit Bookmark and hit Enter")
    +    val=$?
    +    if [[ $val -eq 1 ]]; then
    +        exit
    +    elif [[ $val -eq 0 ]]; then
    +        if [[ $bmarkmenu == "http"* ]]; then
    +            buku -u "${id}" --url "${bmarkmenu}"
    +        else
    +            echo "" | rofi -e "Not a valid URI, Make sure URLs start with http"
                 editBookmark
    -        fi
    -    fi
    -    mode=bookmarks main
    -}
    +        fi
    +    fi
    +    mode=bookmarks main
    +}
     
    -editTitle () {
    -  titlemenu=$(echo "" | _rofi -p "> " -filter "${title}" -mesg "Edit Title and hit Enter")
    -  val=$?
    -  if [[ $val -eq 1 ]]; then
    -    exit
    -  elif [[ $val -eq 0 ]]; then
    -    buku -u "${id}" --title "${titlemenu}"
    -  fi
    -  mode=bookmarks main
    -}
    +editTitle () {
    +    titlemenu=$(echo "" | _rofi -p "> " -filter "${title}" -mesg "Edit Title and hit Enter")
    +    val=$?
    +    if [[ $val -eq 1 ]]; then
    +        exit
    +    elif [[ $val -eq 0 ]]; then
    +        buku -u "${id}" --title "${titlemenu}"
    +    fi
    +    mode=bookmarks main
    +}
     
    -addMark () {
    -    inserturl=$(echo -e "$(xclip -o)" | _rofi -p '> ' -mesg "Use URL below or type manually")
    -    val=$?
    -    if [[ $val -eq 1 ]]; then
    -        exit
    -    elif [[ $val -eq 0 ]]; then
    +addMark () {
    +    inserturl=$(echo -e "$(xclip -o)" | _rofi -p '> ' -mesg "Use URL below or type manually")
    +    val=$?
    +    if [[ $val -eq 1 ]]; then
    +        exit
    +    elif [[ $val -eq 0 ]]; then
             addTags
    -    fi
    -}
    +    fi
    +}
     
    -addTags () {
    -    inserttags=$(buku --np --st | awk '{$NF=""; print $0}' | cut -d ' ' -f2- | _rofi -p '> ' -mesg "Add some tags. Separate tags with ', '")
    -    val=$?
    -    if [[ $val -eq 1 ]]; then
    -        exit
    -    elif [[ $val -eq 0 ]]; then
    -        if [[ $(echo "${inserttags}" | wc -l) -gt 1 ]]; then
    -            taglist=$(echo "${inserttags}" | tr '\n' ',')
    -            tags=()
    -            for tag in $taglist; do
    -                tags+=("$tag")
    -            done
    -        else
    -            tags=${inserttags}
    -        fi
    -        if [[ $1 == "--update" ]]; then
    -            buku -u "${id}" --tag ${tags}
    -        else
    -            buku -a ${inserturl} ${tags}
    -        fi
    -    fi
    -}
    +addTags () {
    +    inserttags=$(buku --np --st | awk '{$NF=""; print $0}' | cut -d ' ' -f2- | _rofi -p '> ' -mesg "Add some tags. Separate tags with ', '")
    +    val=$?
    +    if [[ $val -eq 1 ]]; then
    +        exit
    +    elif [[ $val -eq 0 ]]; then
    +        if [[ $(echo "${inserttags}" | wc -l) -gt 1 ]]; then
    +            taglist=$(echo "${inserttags}" | tr '\n' ',')
    +            tags=()
    +            for tag in $taglist; do
    +                tags+=("$tag")
    +            done
    +        else
    +            tags=${inserttags}
    +        fi
    +        if [[ $1 == "--update" ]]; then
    +            buku -u "${id}" --tag ${tags}
    +        else
    +            buku -a ${inserturl} ${tags}
    +        fi
    +    fi
    +}
     
    -parseBuku () {
    -  echo "$(buku --nc -p | gawk -v max="$max_str_width" -v type="$display_type" '
    -BEGIN {
    -  RS=""
    -  FS="\n"
    -}
    -{
    -  if ($3 == "")
    -    $3 = " # NOTAG"
    -  id = gensub(/([0-9]+)\.(.*)/, "\\1", "g", $1)
    -  url = substr(gensub(/\s+> (.*)/, "\\1", "g", $2),0,max)
    -  tags = gensub(/\s+# (.*)/, "\\1", "g", $3)
    -  title = substr(gensub(/[0-9]+\.\s*(.*)/, "\\1", "g", $1),0,max)
    +parseBuku () {
    +    echo "$(buku --nc -p | gawk -v max="$max_str_width" -v type="$display_type" '
    +BEGIN {
    +  RS=""
    +  FS="\n"
    +}
    +{
    +  if ($3 == "")
    +    $3 = " # NOTAG"
    +  id = gensub(/([0-9]+)\.(.*)/, "\\1", "g", $1)
    +  url = substr(gensub(/\s+> (.*)/, "\\1", "g", $2),0,max)
    +  tags = gensub(/\s+# (.*)/, "\\1", "g", $3)
    +  title = substr(gensub(/[0-9]+\.\s*(.*)/, "\\1", "g", $1),0,max)
     
    -  if (type == 1)
    -    print id "\t" url "\t" tags
    -  else
    -    print id "\t" title "\t" tags
    -    if (type == 3)
    -      print " \t" url "\t "
    -  print ""
    -}
    -' | column -t -s $'\t')"
    -}
    +  if (type == 1)
    +    print id "\t" url "\t" tags
    +  else
    +    print id "\t" title "\t" tags
    +    if (type == 3)
    +      print " \t" url "\t "
    +  print ""
    +}
    +' | column -t -s $'\t')"
    +}
     
    -getId () {
    -  id=$(echo "${2%% *}")
    -  if [ -z "$id" ]; then
    -    prev=""
    -    IFS=$'\n'
    -    for line in $1; do
    -      if [ "$2" = "$line" ]; then
    -        id=$(echo "${prev%% *}")
    -        break
    -      else
    -        prev="$line"
    -      fi
    -    done
    -  fi
    -  echo $id
    -}
    +getId () {
    +    id=$(echo "${2%% *}")
    +    if [ -z "$id" ]; then
    +        prev=""
    +        IFS=$'\n'
    +        for line in $1; do
    +            if [ "$2" = "$line" ]; then
    +                id=$(echo "${prev%% *}")
    +                break
    +            else
    +                prev="$line"
    +            fi
    +        done
    +    fi
    +    echo $id
    +}
     
    -getTitleFromId () {
    -  echo "$(buku --nc -p $1 | gawk '
    -  BEGIN {
    -    RS=""
    -    FS="\n"
    -  }
    -  {
    -    print gensub(/[0-9]+\.\s*(.*)/, "\\1", "g", $1)
    -  }
    -  ')"
    -}
    +getTitleFromId () {
    +    echo "$(buku --nc -p $1 | gawk '
    +  BEGIN {
    +    RS=""
    +    FS="\n"
    +  }
    +  {
    +    print gensub(/[0-9]+\.\s*(.*)/, "\\1", "g", $1)
    +  }
    +  ')"
    +}
     
    -getUrlFromId () {
    -  echo "$(buku --nc -p $1 | gawk '
    -  BEGIN {
    -    RS=""
    -    FS="\n"
    -  }
    -  {
    -    print gensub(/\s+> (.*)/, "\\1", "g", $2)
    -  }
    -  ')"
    -}
    +getUrlFromId () {
    +    echo "$(buku --nc -p $1 | gawk '
    +  BEGIN {
    +    RS=""
    +    FS="\n"
    +  }
    +  {
    +    print gensub(/\s+> (.*)/, "\\1", "g", $2)
    +  }
    +  ')"
    +}
     
    -getTagsFromId () {
    -  echo "$(buku --nc -p $1 | gawk '
    -  BEGIN {
    -    RS=""
    -    FS="\n"
    -  }
    -  {
    -    print gensub(/\s+# (.*)/, "\\1", "g", $3)
    -  }
    -  ')"
    -}
    +getTagsFromId () {
    +    echo "$(buku --nc -p $1 | gawk '
    +  BEGIN {
    +    RS=""
    +    FS="\n"
    +  }
    +  {
    +    print gensub(/\s+# (.*)/, "\\1", "g", $3)
    +  }
    +  ')"
    +}
     
    -mode=bookmarks main
    +mode=bookmarks main
     
    +

    i3exit - Manage lock, suspend, reboot, …

    -
    # with openrc use loginctl
    -case "$1" in
    -    lock)
    -        ~/scripts/lockscreen.sh
    +
    option=$(echo -e "Lock\nExit\nLogout\nSuspend\nHibernate\nReboot\nShutdown" | rofi -i -dmenu)
    +
    +case "$option" in
    +    "Lock")
    +        ~/.local/bin/lockscreen
             ;;
    -    logout)
    -        loginctl terminate-session `loginctl session-status | head -n 1 | awk '{print $1}'`
    -        ;;
    -    switch_user)
    +    "Exit")
             dm-tool switch-to-greeter
             ;;
    -    suspend)
    -        systemctl suspend && ~/scripts/lockscreen.sh
    +    "Logout")
    +        loginctl terminate-session `loginctl session-status | head -n 1 | awk '{print $1}'`
             ;;
    -    hibernate)
    -        systemctl hibernate && ~/scripts/lockscreen.sh
    +    "Suspend")
    +        systemctl suspend && ~/.local/bin/lockscreen
             ;;
    -    reboot)
    +    "Hibernate")
    +        systemctl hibernate && ~/.local/bin/lockscreen
    +        ;;
    +    "Reboot")
             systemctl reboot
             ;;
    -    shutdown)
    +    "Shutdown")
             systemctl poweroff
             ;;
         *)
    -        echo "== ! i3exit: missing or invalid argument ! =="
    -        echo "Try again with: lock | logout | switch_user | suspend | hibernate | reboot | shutdown"
    -        exit 2
    -esac
    +        echo "== ! i3exit: missing or invalid argument ! =="
    +        exit 2
    +esac
     
    -exit 0
    +exit 0
     
    -
    -

    readbib - Open Bibliography File

    -
    -
    -
    cd ~/Cloud/thesis/ressources/pdfs/ && ls | rofi -dmenu -lines 20 | xargs -I {} zathura {}
    -
    -
    -
    -
    - -
    -

    readnotes - Open Note File

    -
    -
    -
    cd ~/Cloud/thesis/ressources/notes/pdfs/ && ls *.pdf | rofi -dmenu -lines 20 | xargs -I {} zathura {}
    -
    -
    -
    -
    - -
    -

    TODO askpass

    -
    -
      -
    • [ ] Should be a script
    • -
    - +
    +

    askpass-rofi - GUI prompt for passwords

    +

    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/://)"
     
    @@ -799,60 +549,32 @@ The sed piece just removes the colon from the provided prompt: rofi -pscreenshot - Take Screenshot
    -
    status=$(echo -e "All\nGUI\nSelection\nCropped\nCopy\nShadow\nActive" | rofi -i -dmenu -p "Type")
    -if [ -z "$status" ]; then
    -  exit;
    -fi
    +
    status=$(echo -e "All\nGUI\nSelection\nCropped\nCopy\nShadow\nActive" | rofi -i -dmenu -p "Type")
    +if [ -z "$status" ]; then
    +  exit;
    +fi
     
    -name=$(echo -e "screenshot-$(date +"%m-%d-%y_%H-%M-%S")" | rofi -i -dmenu -p "Filename")
    -if [ -z "$name" ]; then
    -  exit;
    -fi
    +name=$(echo -e "screenshot-$(date +"%m-%d-%y_%H-%M-%S")" | rofi -i -dmenu -p "Filename")
    +if [ -z "$name" ]; then
    +  exit;
    +fi
     
    -case "$status" in
    -    "All")
    -        maim ~/Pictures/$name.png ;;
    -    "GUI")
    -        flameshot gui -r > ~/Pictures/$name.png ;;
    -    "Selection")
    -        maim -s ~/Pictures/$name.png ;;
    -    "Cropped")
    -        maim -s ~/Pictures/$name.png && convert -trim ~/Pictures/$name.png ~/Pictures/$name.png;;
    -    "Copy")
    +case "$status" in
    +    "All")
    +        maim ~/Pictures/$name.png ;;
    +    "GUI")
    +        flameshot gui -r > ~/Pictures/$name.png ;;
    +    "Selection")
    +        maim -s ~/Pictures/$name.png ;;
    +    "Cropped")
    +        maim -s ~/Pictures/$name.png && convert -trim ~/Pictures/$name.png ~/Pictures/$name.png;;
    +    "Copy")
             maim -s | xclip -selection clipboard -t image/png ;;
    -    "Shadow")
    -        maim -st 9999999 | convert - \( +clone -background black -shadow 80x3+5+5 \) +swap -background none -layers merge +repage ~/Pictures/$name.png ;;
    -    "Active")
    -        maim -i $(xdotool getactivewindow) ~/Pictures/$name.png ;;
    -esac
    -
    -
    -
    -
    - -
    -

    remote-desktop - Remote Desktop Connect

    -
    -
    -
    computer=$(echo -e 'RNICE\nPCMEL1\nPCNASS1\nPCMEG01' | dmenu -p 'Computer:' -l 20);
    -
    -case $computer in
    -    PCMEL1)
    -          rdesktop -a 16 -P -z -x m -r sound:off -g "80%" -u "ESRF\OPPEL" -p $(pass esrf/PCMEL1/OPPEL | sed -n 1p) pcmel1
    -          ;;
    -    PCMEG01)
    -          rdesktop -a 16 -P -z -x m -r sound:off -g "80%" -u "ESRF\DEHAEZE" -p $(pass ssl.esrf.fr/dehaeze | sed -n 1p) pcmeg01
    -          ;;
    -    PCNASS1)
    -          rdesktop -a 16 -P -z -x m -r sound:off -g "80%" -u "ESRF\DEHAEZE" -p $(pass ssl.esrf.fr/dehaeze | sed -n 1p) pcnass1
    -          ;;
    -    RNICE)
    -          echo "Not yet implemented"
    -          ;;
    -    *)
    -          echo "Not existing"
    -          ;;
    -esac
    +    "Shadow")
    +        maim -st 9999999 | convert - \( +clone -background black -shadow 80x3+5+5 \) +swap -background none -layers merge +repage ~/Pictures/$name.png ;;
    +    "Active")
    +        maim -i $(xdotool getactivewindow) ~/Pictures/$name.png ;;
    +esac
     
    @@ -862,51 +584,16 @@ The sed piece just removes the colon from the provided prompt: rofi -pnetwork-toggle - Toggle Network
    -
    result=$(nmcli device | sed '1d' | dmenu -l 20);
    +
    result=$(nmcli device | sed '1d' | dmenu -l 20);
     
    -interface=$(echo $result | awk -F ' ' '{print $1}');
    -status=$(echo $result | awk -F ' ' '{print $3}');
    +interface=$(echo $result | awk -F ' ' '{print $1}');
    +status=$(echo $result | awk -F ' ' '{print $3}');
     
    -if [ $status == 'disconnected' ]; then
    -  nmcli device connect $interface
    -else
    -  nmcli device disconnect $interface
    -fi
    -
    -
    -
    -
    - -
    -

    print-rnice - Print on Rnice

    -
    -
    -
    nbpage=$(echo -e '1\n2\n4' | dmenu -p 'Number of pages per sheet' -l 20);
    -sides=$(echo -e 'one-sided\ntwo-sided-long-edge\ntwo-sided-short-edge' | dmenu -p 'Two Sided:' -l 20);
    -
    -# First copy the file to Rnice
    -if sshpass -p "$(pass ssl.esrf.fr/dehaeze | sed -n 1p)" scp $1 dehaeze@rnice:~/Downloads/; then
    -  # Then print on Rnice
    -  sshpass -p "$(pass ssl.esrf.fr/dehaeze | sed -n 1p)" ssh dehaeze@rnice "lpr -o media=A4 -o sides=$sides -o number-up=$nbpage -P ctb110c1u ~/Downloads/$1";
    -  # Finally, delete the file
    -else
    -  echo "Command Failed"
    -fi
    -
    -
    -
    -
    - -
    -

    TODO Mount TMP14DAYS

    -
    -
      -
    • [ ] Put that as a script?
    • -
    - -
    -
    sudo -A mkdir ~/tmp_14_days;
    -sudo -A mount -o rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=160.103.232.103,mountvers=3,mountport=597,mountproto=tcp,local_lock=none,addr=160.103.232.103 rnice:/hz/tmp_14_days ~/tmp_14_days;
    +if [ $status == 'disconnected' ]; then
    +  nmcli device connect $interface
    +else
    +  nmcli device disconnect $interface
    +fi
     
    @@ -915,31 +602,28 @@ The sed piece just removes the colon from the provided prompt: rofi -p

    make-gif - Make GIF

    -

    -http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html -

    -
    -
    palette="/tmp/palette.png"
    +
    palette="/tmp/palette.png"
     
    -filters="fps=15,scale=320:-1:flags=lanczos"
    +filters="fps=15,scale=320:-1:flags=lanczos"
     
    -ffmpeg -v warning -i $1 -vf "$filters,palettegen" -y $palette
    -ffmpeg -v warning -i $1 -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y $2
    +ffmpeg -v warning -i $1 -vf "$filters,palettegen" -y $palette
    +ffmpeg -v warning -i $1 -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y $2
     
    +

    yt-audio - Download-Audio from youtube

    -
    if [ $TMUX ]; then
    -    tmux split -v -l 5 "cd ~/Downloads/ && youtube-dl --add-metadata -xic -f bestaudio/best $1" && tmux select-pane -U
    -else
    -    cd ~/Downloads/;
    -    setsid nohup youtube-dl --add-metadata -xic -f bestaudio/best $1 &> /dev/null &
    -fi
    +
    if [ $TMUX ]; then
    +    tmux split -v -l 5 "cd ~/Downloads/ && youtube-dl --add-metadata -xic -f bestaudio/best $1" && tmux select-pane -U
    +else
    +    cd ~/Downloads/;
    +    setsid nohup youtube-dl --add-metadata -xic -f bestaudio/best $1 &> /dev/null &
    +fi
     
    @@ -949,87 +633,12 @@ ffmpeg -v warning -i $1 -i $yt-video - Download-Video from youtube
    -
    if [ $TMUX ]; then
    -    tmux split -v -l 5 "cd ~/Downloads/ && youtube-dl --add-metadata -ic $1" && tmux select-pane -U
    -else
    -    cd ~/Downloads/;
    -    setsid nohup youtube-dl --add-metadata -ic $1 &> /dev/null &
    -fi
    -
    -
    -
    -
    -
    -

    pdf-shrink Pdf Shrink

    -
    -
    -
    shrink ()
    -{
    -gs \
    -  -q -dNOPAUSE -dBATCH -dSAFER \
    -  -sDEVICE=pdfwrite \
    -  -dCompatibilityLevel=1.3 \
    -  -dPDFSETTINGS=/screen \
    -  -dEmbedAllFonts=true \
    -  -dSubsetFonts=true \
    -  -dAutoRotatePages=/None \
    -  -dColorImageDownsampleType=/Bicubic \
    -  -dColorImageResolution=$3 \
    -  -dGrayImageDownsampleType=/Bicubic \
    -  -dGrayImageResolution=$3 \
    -  -dMonoImageDownsampleType=/Subsample \
    -  -dMonoImageResolution=$3 \
    -  -sOutputFile="$2" \
    -  "$1"
    -}
    -
    -check_smaller ()
    -{
    -# If $1 and $2 are regular files, we can compare file sizes to
    -# see if we succeeded in shrinking. If not, we copy $1 over $2:
    -if [ ! -f "$1" -o ! -f "$2" ]; then
    -return 0;
    -fi
    -ISIZE="$(echo $(wc -c "$1") | cut -f1 -d\ )"
    -OSIZE="$(echo $(wc -c "$2") | cut -f1 -d\ )"
    -if [ "$ISIZE" -lt "$OSIZE" ]; then
    -echo "Input smaller than output, doing straight copy" >&2
    -cp "$1" "$2"
    -fi
    -}
    -
    -usage ()
    -{
    -echo "Reduces PDF filesize by lossy recompressing with Ghostscript."
    -echo "Not guaranteed to succeed, but usually works."
    -echo "  Usage: $1 infile [outfile] [resolution_in_dpi]"
    -}
    -
    -IFILE="$1"
    -
    -# Need an input file:
    -if [ -z "$IFILE" ]; then
    -usage "$0"
    -exit 1
    -fi
    -
    -# Output filename defaults to "-" (stdout) unless given:
    -if [ ! -z "$2" ]; then
    -OFILE="$2"
    -else
    -OFILE="-"
    -fi
    -
    -# Output resolution defaults to 72 unless given:
    -if [ ! -z "$3" ]; then
    -res="$3"
    -else
    -res="90"
    -fi
    -
    -shrink "$IFILE" "$OFILE" "$res" || exit $?
    -
    -check_smaller "$IFILE" "$OFILE"
    +
    if [ $TMUX ]; then
    +    tmux split -v -l 5 "cd ~/Downloads/ && youtube-dl --add-metadata -ic $1" && tmux select-pane -U
    +else
    +    cd ~/Downloads/;
    +    setsid nohup youtube-dl --add-metadata -ic $1 &> /dev/null &
    +fi
     
    @@ -1038,60 +647,409 @@ check_smaller "setbg - Set Background
    -
    bgloc="${XDG_CACHE_HOME:-$HOME/.cache/}/bg"
    +
    bgloc="${XDG_CACHE_HOME:-$HOME/.cache/}/bg"
     
    -[ -f "$1" ] && ln -sf "$(readlink -f "$1")" "$bgloc"
    +[ -f "$1" ] && ln -sf "$(readlink -f "$1")" "$bgloc"
     
    -[ -d "$1" ] && ln -sf "$(find "$(readlink -f "$1")" -iregex '.*.\(jpg\|jpeg\|png\|gif\)' -type f | shuf -n 1)" "$bgloc"
    +[ -d "$1" ] && ln -sf "$(find "$(readlink -f "$1")" -iregex '.*.\(jpg\|jpeg\|png\|gif\)' -type f | shuf -n 1)" "$bgloc"
     
    -xwallpaper --zoom "$bgloc"
    +xwallpaper --zoom "$bgloc"
     
    -
    -

    Insert Unicode Icon

    -
    +
    +

    insert-unicode - Insert Unicode Icon

    +
    -
    # The famous "get a menu of emojis to copy" script.
    +
    # Must have xclip installed to even show menu.
    +xclip -h 2>/dev/null || exit 1
     
    -# Must have xclip installed to even show menu.
    -xclip -h 2>/dev/null || exit 1
    +chosen=$(cut -d ';' -f1 ~/.local/data/emojis | rofi -dmenu -i -l 20 | sed "s/ .*//")
     
    -chosen=$(cut -d ';' -f1 ~/.local/share/emoji | rofi -dmenu -i -l 20 | sed "s/ .*//")
    +[ "$chosen" != "" ] || exit
     
    -[ "$chosen" != "" ] || exit
    -
    -# If you run this command with an argument, it will automatically insert the character.
    -if [ -n "$1" ]; then
    +# If you run this command with an argument, it will automatically insert the character.
    +if [ -n "$1" ]; then
         xdotool key Shift+Insert
    -else
    -    echo "$chosen" | tr -d '\n' | xsel -ib
    -    dunstify "'$chosen' copied to clipboard." &
    -fi
    +else
    +    echo "$chosen" | tr -d '\n' | xsel -ib
    +    dunstify "'$chosen' copied to clipboard." &
    +fi
     
    -
    -

    Insert Nerd Font Icon

    -
    +
    +

    insert-nerd-fonts - Insert Nerd Font Icon

    +
    -
    # Must have xsel installed to even show menu.
    -xsel -h 2>/dev/null || exit 1
    +
    # Must have xsel installed to even show menu.
    +xsel -h 2>/dev/null || exit 1
     
    -chosen=$(cat ~/.local/share/nerd-fonts | rofi -dmenu -i -l 20 | sed "s/ .*//")
    +chosen=$(cat ~/.local/data/nerd-fonts | rofi -dmenu -i -l 20 | sed "s/ .*//")
     
    -[ "$chosen" != "" ] || exit
    +[ "$chosen" != "" ] || exit
     
    -# If you run this command with an argument, it will automatically insert the character.
    -if [ -n "$1" ]; then
    +# If you run this command with an argument, it will automatically insert the character.
    +if [ -n "$1" ]; then
         xdotool key Shift+Insert
    -else
    -    echo "$chosen" | tr -d '\n' | xsel -ib
    -    dunstify "'$chosen' copied to clipboard." &
    -fi
    +else
    +    echo "$chosen" | tr -d '\n' | xsel -ib
    +    dunstify "'$chosen' copied to clipboard." &
    +fi
    +
    +
    +
    +
    + +
    +

    linkhandler - Open with Default application

    +
    +

    +Inspired from linkhandler https://github.com/LukeSmithxyz/voidrice/ +This is used in newsboat to handle links +

    + +
    +
    [ -z "$1" ] && { "$BROWSER"; exit; }
    +
    +case "$1" in
    +    *mkv|*webm|*mp4|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*hooktube.com*|*bitchute.com*)
    +        setsid mpv --input-ipc-server=/tmp/mpvsoc$(date +%s) -quiet "$1" >/dev/null 2>&1 & ;;
    +    *png|*jpg|*jpe|*jpeg|*gif)
    +        curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///")" && sxiv -a "/tmp/$(echo "$1" | sed "s/.*\///")"  >/dev/null 2>&1 & ;;
    +    *mp3|*flac|*opus|*mp3?source*)
    +        setsid tsp curl -LO "$1" >/dev/null 2>&1 & ;;
    +    *)
    +        if [ -f "$1" ]; then "$TERMINAL" -e "$EDITOR $1"
    +        else setsid $BROWSER "$1" >/dev/null 2>&1 & fi ;;
    +esac
    +
    +
    +
    +
    +
    +

    lockscreen - LockScreen

    +
    +

    +First, turn off dunst +

    +
    +
    killall -SIGUSR1 dunst && echo "off" > /tmp/dunststatus;
    +
    +
    + +

    +Turn off the music if it is playing. +

    +
    +
    MPC_STATE=$(mpc | sed -n '2p' | cut -d "[" -f2 | cut -d "]" -f1)
    +if [[ $MPC_STATE == "playing" ]]; then
    +  mpc pause
    +fi
    +
    +
    + +

    +Then take a screenshot and process it. +

    +
    +
    temp_file="/tmp/screen.png"
    +
    +rm -f $temp_file
    +
    +maim $temp_file
    +convert $temp_file -scale 10% -scale 1000% $temp_file
    +
    +
    + +

    +Finally, lock the screen using i3lock. +

    +
    +
    i3lock --no-unlock-indicator --ignore-empty-password --nofork --image=$temp_file && killall -SIGUSR2 dunst && echo "on" > /tmp/dunststatus
    +
    +
    + +
    +
    revert() {
    +    xset dpms 0 0 0
    +}
    +trap revert HUP INT TERM
    +# turn off screen after 5 seconds
    +xset +dpms dpms 5 5 5
    +
    +# Parameters
    +temp_file="/tmp/screen.png"
    +icon="$HOME/Pictures/Evil_Rick_Sprite.png"
    +width=1920
    +height=1080
    +blur_factor=6
    +lock_blur_factor=0
    +
    +# Take the screen shot, blur the image and add the icon
    +ffmpeg -f x11grab -video_size "${width}x${height}" -y -i $DISPLAY -i $icon -filter_complex "boxblur=$blur_factor:$blur_factor,overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2,boxblur=$lock_blur_factor:$lock_blur_factor" -vframes 1 $temp_file
    +
    +# Alternative
    +# maim -d 1 $temp_file
    +# convert -blur 0x8 $temp_file $temp_file
    +# convert -composite $temp_file $icon -gravity South -geometry -20x1200 $temp_file
    +
    +# Lock the screen with the image
    +i3lock --no-unlock-indicator --ignore-empty-password --show-failed-attempts --nofork --image=$temp_file
    +
    +# Remove the screenshot
    +rm $temp_file
    +
    +# Don't turn off screen when back from lock
    +revert
    +
    +
    +
    +
    + +
    +

    mopidy-restart - Restart Mopidy

    +
    +
    +
    pids=( $(pgrep -f mopidy) )
    +
    +for pid in "${pids[@]}"; do
    +    if [[ $pid != $$ ]]; then
    +        kill "$pid"
    +    fi
    +done
    +
    +echo "Killed mopidy."
    +echo "Restarting mopidy..."
    +mopidy --config ~/.config/mopidy/mopidy.conf >/dev/null 2>&1 &
    +echo "Done"
    +
    +
    +
    +
    + +
    +

    upload - Upload Script

    +
    +
    +
    if [ $TMUX ]; then
    +    tmux split -v -l 1 "curl --progress-bar -F\"file=@$1\" https://0x0.st | xsel -ib;" && tmux select-pane -U
    +else
    +    curl --progress-bar -F"file=@$1" https://0x0.st | xsel -ib && \
    +        dunstify 'Upload' 'Successful' || \
    +        dunstify --urgency=critical 'Upload' 'Failed'
    +fi
    +
    +
    +
    +
    + +
    +

    weather - Display Weather in terminal

    +
    +
    +
    if [ -n "$*" ]; then
    +    address="wttr.in/"
    +    address+=$*
    +else
    +    address="wttr.in/"
    +fi
    +
    +if type sxiv > /dev/null 2>&1; then
    +    address+=".png"
    +
    +    wget -qO- "$address" > /tmp/weather.png && \
    +        sxiv -b /tmp/weather.png
    +elif type feh > /dev/null 2>&1; then
    +    address+=".png"
    +
    +    wget -qO- "$address" | feh -
    +else
    +    curl "$address"
    +fi
    +
    +
    +
    +
    +
    +

    readbib - Open Bibliography File

    +
    +
    +
    cd ~/Cloud/pdfs/ && ls | rofi -dmenu -lines 20 | xargs -I {} zathura {}
    +
    +
    +
    +
    + +
    +

    readnotes - Open Note File

    +
    +
    +
    cd ~/Cloud/thesis/ressources/notes/pdfs/ && ls *.pdf | rofi -dmenu -lines 20 | xargs -I {} zathura {}
    +
    +
    +
    +
    + +
    +

    pdf2bib - Extract bibtex entry from PDF file

    +
    +
    +
    pdf2doi () {
    +    pdfinfo "$1" | grep -io "doi:.*" | grep -Poi "10.\d+/[^\s]+" || \
    +        pdftotext "$1" 2>/dev/null - | grep -io "doi:.*" -m 1 | grep -Poi "10.\d+/[^\s]+" || \
    +        pdftotext "$1" 2>/dev/null - | grep -Poi "10.\d+/[^\s]+"
    +}
    +
    +doi2bib () {
    +    # curl -LHs "Accept: application/x-bibtex" http://dx.doi.org/$1 -w "\\n"
    +    curl -s "http://api.crossref.org/works/$1/transform/application/x-bibtex" -w "\\n"
    +}
    +
    +# If a file is specified, try to extract DOI from the file
    +if [ -f "$1" ]; then
    +    doi=$(pdf2doi "$1")
    +fi
    +
    +if hash rofi 2>/dev/null; then
    +    doi=$(echo "$doi" | rofi -i -dmenu -p "DOI")
    +else
    +    doi=$(echo "$doi" | dmenu -i -p "DOI")
    +fi
    +
    +if [ -n "$1" ]; then
    +    doi2bib $doi | xsel -ib && \
    +        dunstify 'BibTeX' 'Copied to Clipboard' || \
    +        dunstify --urgency=critical 'BibTeX' 'Failed'
    +fi
    +
    +
    +
    +
    + +
    +

    pdf2png - Convert a PDF to PNG

    +
    +
    +
    if [[ -f $1 && $1 == *.pdf ]]; then
    +    pdftoppm -png $1 > $(echo $1 | cut -f 1 -d '.' | sed 's/$/.png/')
    +fi
    +
    +
    +
    +
    +
    +

    pdf-shrink - Pdf Shrink

    +
    +
    +
    shrink ()
    +{
    +gs \
    +  -q -dNOPAUSE -dBATCH -dSAFER \
    +  -sDEVICE=pdfwrite \
    +  -dCompatibilityLevel=1.3 \
    +  -dPDFSETTINGS=/screen \
    +  -dEmbedAllFonts=true \
    +  -dSubsetFonts=true \
    +  -dAutoRotatePages=/None \
    +  -dColorImageDownsampleType=/Bicubic \
    +  -dColorImageResolution=$3 \
    +  -dGrayImageDownsampleType=/Bicubic \
    +  -dGrayImageResolution=$3 \
    +  -dMonoImageDownsampleType=/Subsample \
    +  -dMonoImageResolution=$3 \
    +  -sOutputFile="$2" \
    +  "$1"
    +}
    +
    +check_smaller ()
    +{
    +# If $1 and $2 are regular files, we can compare file sizes to
    +# see if we succeeded in shrinking. If not, we copy $1 over $2:
    +if [ ! -f "$1" -o ! -f "$2" ]; then
    +return 0;
    +fi
    +ISIZE="$(echo $(wc -c "$1") | cut -f1 -d\ )"
    +OSIZE="$(echo $(wc -c "$2") | cut -f1 -d\ )"
    +if [ "$ISIZE" -lt "$OSIZE" ]; then
    +echo "Input smaller than output, doing straight copy" >&2
    +cp "$1" "$2"
    +fi
    +}
    +
    +usage ()
    +{
    +echo "Reduces PDF filesize by lossy recompressing with Ghostscript."
    +echo "Not guaranteed to succeed, but usually works."
    +echo "  Usage: $1 infile [outfile] [resolution_in_dpi]"
    +}
    +
    +IFILE="$1"
    +
    +# Need an input file:
    +if [ -z "$IFILE" ]; then
    +usage "$0"
    +exit 1
    +fi
    +
    +# Output filename defaults to "-" (stdout) unless given:
    +if [ ! -z "$2" ]; then
    +OFILE="$2"
    +else
    +OFILE="-"
    +fi
    +
    +# Output resolution defaults to 72 unless given:
    +if [ ! -z "$3" ]; then
    +res="$3"
    +else
    +res="90"
    +fi
    +
    +shrink "$IFILE" "$OFILE" "$res" || exit $?
    +
    +check_smaller "$IFILE" "$OFILE"
    +
    +
    +
    +
    +
    +

    pdf-delete-annotations - Delete Annotations from PDFs

    +
    +

    +From: https://gist.github.com/stefanschmidt/5248592 +

    + +
    +
    pdftk $1 output /tmp/uncompressed.pdf uncompress
    +LANG=C sed -n '/^\/Annots/!p' /tmp/uncompressed.pdf > /tmp/stripped.pdf
    +pdftk /tmp/stripped.pdf output $1 compress
    +
    +
    +
    +
    + +
    +

    pdf-delete-first-page - Delete first page of PDF

    +
    +

    +The requirement is to have pdftk or stapler installed. +

    + +
    +
    if [[ -f $1 && $1 == *.pdf ]]; then
    +    # Argument if a file
    +    if type stapler > /dev/null 2>&1; then
    +        stapler del "$1" 1 /tmp/pdftk_out.pdf && mv /tmp/pdftk_out.pdf "$1"
    +    elif type pdftk > /dev/null 2>&1; then
    +        pdftk "$1" cat 2-end output /tmp/pdftk_out.pdf && mv /tmp/pdftk_out.pdf "$1"
    +    else
    +        echo "Neither pdftk nor stapler are installed"
    +    fi
    +fi
     
    @@ -1099,7 +1057,7 @@ xsel -h 2>/dev/null ||

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:39

    diff --git a/docs/calendar.html b/docs/calendar.html index a5f7430..d899cc9 100644 --- a/docs/calendar.html +++ b/docs/calendar.html @@ -1,229 +1,19 @@ - - + - Calendar Configuration - -
    @@ -246,43 +36,43 @@

    Vdirsyncer

    -
    [general]
    -status_path = "~/.config/vdirsyncer/status/"
    +
    [general]
    +status_path = "~/.config/vdirsyncer/status/"
     
    -[pair google_calendar]
    -a = "google_calendar_remote"
    -b = "google_calendar_local"
    -collections = ["dehaeze.thomas@gmail.com", "8kjmhe2ar0abnm054ill1fb0gc@group.calendar.google.com"]
    -conflict_resolution = "a wins"
    +[pair google_calendar]
    +a = "google_calendar_remote"
    +b = "google_calendar_local"
    +collections = ["dehaeze.thomas@gmail.com", "8kjmhe2ar0abnm054ill1fb0gc@group.calendar.google.com"]
    +conflict_resolution = "a wins"
     
    -[storage google_calendar_remote]
    -type = "google_calendar"
    -token_file = "~/.config/dotfiles/private/token_file"
    -client_id = "188415318767-802h28ig8gromo0f72blrbg6cgcop6m8.apps.googleusercontent.com"
    -client_secret = "<<get-password(passname="calendar/google_client_secret")>>"
    +[storage google_calendar_remote]
    +type = "google_calendar"
    +token_file = "~/.config/dotfiles/private/token_file"
    +client_id = "188415318767-802h28ig8gromo0f72blrbg6cgcop6m8.apps.googleusercontent.com"
    +client_secret = "<<get-password(passname="calendar/google_client_secret")>>"
     
    -[storage google_calendar_local]
    -type = "filesystem"
    -path = "~/.calendars/google/"
    -fileext = ".ics"
    +[storage google_calendar_local]
    +type = "filesystem"
    +path = "~/.calendars/google/"
    +fileext = ".ics"
     
     
    -[pair google_contacts]
    -a = "google_contacts_remote"
    -b = "google_contacts_local"
    -collections = ["from a", "from b"]
    -conflict_resolution = "a wins"
    +[pair google_contacts]
    +a = "google_contacts_remote"
    +b = "google_contacts_local"
    +collections = ["from a", "from b"]
    +conflict_resolution = "a wins"
     
    -[storage google_contacts_local]
    -type = "filesystem"
    -path = "~/.contacts/"
    -fileext = ".vcf"
    +[storage google_contacts_local]
    +type = "filesystem"
    +path = "~/.contacts/"
    +fileext = ".vcf"
     
    -[storage google_contacts_remote]
    -type = "google_contacts"
    -token_file = "~/.config/dotfiles/private/token_file_carddav"
    -client_id = "188415318767-802h28ig8gromo0f72blrbg6cgcop6m8.apps.googleusercontent.com"
    -client_secret = "<<get-password(passname="contacts/google_client_secret")>>"
    +[storage google_contacts_remote]
    +type = "google_contacts"
    +token_file = "~/.config/dotfiles/private/token_file_carddav"
    +client_id = "188415318767-802h28ig8gromo0f72blrbg6cgcop6m8.apps.googleusercontent.com"
    +client_secret = "<<get-password(passname="contacts/google_client_secret")>>"
     
    @@ -291,32 +81,36 @@

    Khal

    -

    -:header-arg s: :tangle ~/.config/khal/config -:header-args+: :comments both :mkdirp yes -

    -
    -
    [calendars]
    +
    [calendars]
     
    -[[home]]
    -path = ~/.calendars/google/dehaeze.thomas@gmail.com/
    -color = "#B8BB26"
    +[[home]]
    +path = ~/.calendars/google/dehaeze.thomas@gmail.com/
    +color = "#B8BB26"
     
    -[[work]]
    -path = ~/.calendars/google/8kjmhe2ar0abnm054ill1fb0gc@group.calendar.google.com/
    -color = "#FB4934"
    +[[work]]
    +path = ~/.calendars/google/8kjmhe2ar0abnm054ill1fb0gc@group.calendar.google.com/
    +color = "#FB4934"
     
    -[highlight_days]
    -multiple = "#FABD2F"
    +[highlight_days]
    +multiple = "#FABD2F"
     
    -[default]
    -highlight_event_days = True
    +[default]
    +highlight_event_days = True
     
    -[keybindings]
    -delete = d
    -today = .
    -new = c
    +[locale]
    +local_timezone= Europe/Berlin
    +default_timezone= Europe/Berlin
    +timeformat= %H:%M
    +dateformat= %d.%m.
    +longdateformat= %d.%m.%Y
    +datetimeformat= %d.%m. %H:%M
    +longdatetimeformat= %d.%m.%Y %H:%M
    +
    +[keybindings]
    +delete = d
    +today = .
    +new = c
     
    @@ -324,7 +118,7 @@

    Author: Dehaeze Thomas

    -

    Created: 2020-03-01 dim. 22:49

    +

    Created: 2020-05-26 mar. 08:39

    diff --git a/docs/config.html b/docs/config.html index 0e16bd4..c7d0ec2 100644 --- a/docs/config.html +++ b/docs/config.html @@ -1,229 +1,19 @@ - - + - Configuration Files - -
    @@ -238,7 +28,6 @@
    • SSH
    • Font
    • -
    • Input
    • GnuPG
    • Redshift
    • dmenu
    • @@ -256,31 +45,31 @@ Host grenoble hostname 82.64.103.2 - Port 10022 + Port 10022 user tdehaeze IdentityFile ~/.ssh/id_rsa Host wingaudio hostname 207.154.251.241 - Port 22 + Port 22 user tdehaeze IdentityFile ~/.ssh/id_rsa Host octoprint hostname 192.168.1.56 - Port 22 + Port 22 user pi IdentityFile ~/.ssh/id_rsa Host hassio hostname 192.168.1.101 - Port 10022 + Port 10022 user root IdentityFile ~/.ssh/id_rsa Host nas hostname 192.168.1.50 - Port 10022 + Port 10022 user tdehaeze IdentityFile ~/.ssh/id_rsa
    @@ -292,8 +81,8 @@ Host nas

    Font

    -
    <?xml version='1.0'?>
    -<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
    +
    <?xml version='1.0'?>
    +<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
     <fontconfig>
     
     <alias>
    @@ -319,90 +108,12 @@ Host nas
     
    -
    -

    Input

    -
    -

    -Completion: -

    -
    -
    # Single tab for autocompletion
    -set show-all-if-ambiguous on
    -
    -# Ignore case for completion
    -set completion-ignore-case on
    -
    -
    - -

    -vi mode: -

    -
    -
    # VI mode (works in bash and zsh)
    -set editing-mode vi
    -
    -# 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
    -
    -
    - -

    -Key-bindings for vi-mode: -

    -
    -
    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"
    -
    -
    - -

    -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
    -
    -
    - -

    -Don’t echo ^C after Ctrl+C is pressed. -

    -
    -
    set echo-control-characters off
    -
    -
    -
    -
    -

    GnuPG

    -
    default-cache-ttl 60480000
    -max-cache-ttl 60480000
    +
    default-cache-ttl 60480000
    +max-cache-ttl 60480000
     
    @@ -412,22 +123,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
     
    @@ -437,26 +148,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"
     
    @@ -466,20 +177,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=
     
    @@ -489,8 +200,8 @@ max-cache-ttl 60480000

    Pass Git Helper

    -
    [github.com*]
    -target=github.com/tdehaeze
    +
    [github.com*]
    +target=github.com/tdehaeze
     
    @@ -498,7 +209,7 @@ max-cache-ttl 60480000

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:40

    diff --git a/docs/data.html b/docs/data.html index 4b1df06..268df95 100644 --- a/docs/data.html +++ b/docs/data.html @@ -1,230 +1,19 @@ - - - + - -Scripts +Data - -
    @@ -232,7 +21,7 @@ | HOME
    -

    Scripts

    +

    Data

    Table of Contents

    @@ -247,1286 +36,3697 @@

    Nerd Fonts

    -
     - i_dev_bing_small
    - - i_dev_css_tricks
    - - i_dev_git
    - - i_dev_bitbucket
    - - i_dev_mysql
    - - i_dev_streamline
    - - i_dev_database
    - - i_dev_dropbox
    - - i_dev_github_alt
    - - i_dev_github_badge
    - - i_dev_github
    - - i_dev_wordpress
    - - i_dev_visualstudio
    - - i_dev_jekyll_small
    - - i_dev_android
    - - i_dev_windows
    - - i_dev_stackoverflow
    - - i_dev_apple
    - - i_dev_linux
    - - i_dev_appstore
    - - i_dev_ghost_small
    - - i_dev_yahoo
    - - i_dev_codepen
    - - i_dev_github_full
    - - i_dev_nodejs_small
    - - i_dev_nodejs
    - - i_dev_hackernews
    - - i_dev_ember
    - - i_dev_dojo
    - - i_dev_django
    - - i_dev_npm
    - - i_dev_ghost
    - - i_dev_modernizr
    - - i_dev_unity_small
    - - i_dev_rasberry_pi
    - - i_dev_blackberry
    - - i_dev_go
    - - i_dev_git_branch
    - - i_dev_git_pull_request
    - - i_dev_git_merge
    - - i_dev_git_compare
    - - i_dev_git_commit
    - - i_dev_cssdeck
    - - i_dev_yahoo_small
    - - i_dev_techcrunch
    - - i_dev_smashing_magazine
    - - i_dev_netmagazine
    - - i_dev_codrops
    - - i_dev_phonegap
    - - i_dev_google_drive
    - - i_dev_html5_multimedia
    - - i_dev_html5_device_access
    - - i_dev_html5_connectivity
    - - i_dev_html5_3d_effects
    - - i_dev_html5
    - - i_dev_scala
    - - i_dev_java
    - - i_dev_ruby
    - - i_dev_ubuntu
    - - i_dev_ruby_on_rails
    - - i_dev_python
    - - i_dev_php
    - - i_dev_markdown
    - - i_dev_laravel
    - - i_dev_magento
    - - i_dev_joomla
    - - i_dev_drupal
    - - i_dev_chrome
    - - i_dev_ie
    - - i_dev_firefox
    - - i_dev_opera
    - - i_dev_bootstrap
    - - i_dev_safari
    - - i_dev_css3
    - - i_dev_css3_full
    - - i_dev_sass
    - - i_dev_grunt
    - - i_dev_bower
    - - i_dev_javascript
    - - i_dev_javascript_shield
    - - i_dev_jquery
    - - i_dev_coffeescript
    - - i_dev_backbone
    - - i_dev_angular
    - - i_dev_jquery_ui
    - - i_dev_swift
    - - i_dev_symfony
    - - i_dev_symfony_badge
    - - i_dev_less
    - - i_dev_stylus
    - - i_dev_trello
    - - i_dev_atlassian
    - - i_dev_jira
    - - i_dev_envato
    - - i_dev_snap_svg
    - - i_dev_raphael
    - - i_dev_compass
    - - i_dev_onedrive
    - - i_dev_gulp
    - - i_dev_atom
    - - i_dev_cisco
    - - i_dev_nancy
    - - i_dev_jenkins
    - - i_dev_clojure
    - - i_dev_perl
    - - i_dev_clojure_alt
    - - i_dev_celluloid
    - - i_dev_w3c
    - - i_dev_redis
    - - i_dev_postgresql
    - - i_dev_webplatform
    - - i_dev_requirejs
    - - i_dev_opensource
    - - i_dev_typo3
    - - i_dev_uikit
    - - i_dev_doctrine
    - - i_dev_groovy
    - - i_dev_nginx
    - - i_dev_haskell
    - - i_dev_zend
    - - i_dev_gnu
    - - i_dev_yeoman
    - - i_dev_heroku
    - - i_dev_msql_server
    - - i_dev_debian
    - - i_dev_travis
    - - i_dev_dotnet
    - - i_dev_codeigniter
    - - i_dev_javascript_badge
    - - i_dev_yii
    - - i_dev_composer
    - - i_dev_krakenjs_badge
    - - i_dev_krakenjs
    - - i_dev_mozilla
    - - i_dev_firebase
    - - i_dev_sizzlejs
    - - i_dev_creativecommons
    - - i_dev_creativecommons_badge
    - - i_dev_mitlicence
    - - i_dev_senchatouch
    - - i_dev_bugsense
    - - i_dev_extjs
    - - i_dev_mootools_badge
    - - i_dev_mootools
    - - i_dev_ruby_rough
    - - i_dev_komodo
    - - i_dev_coda
    - - i_dev_bintray
    - - i_dev_terminal
    - - i_dev_code
    - - i_dev_responsive
    - - i_dev_dart
    - - i_dev_aptana
    - - i_dev_mailchimp
    - - i_dev_netbeans
    - - i_dev_dreamweaver
    - - i_dev_brackets
    - - i_dev_eclipse
    - - i_dev_cloud9
    - - i_dev_scrum
    - - i_dev_prolog
    - - i_dev_terminal_badge
    - - i_dev_code_badge
    - - i_dev_mongodb
    - - i_dev_meteor
    - - i_dev_meteorfull
    - - i_dev_fsharp
    - - i_dev_rust
    - - i_dev_ionic
    - - i_dev_sublime
    - - i_dev_appcelerator
    - - i_dev_asterisk
    - - i_dev_aws
    - - i_dev_digital_ocean
    - - i_dev_dlang
    - - i_dev_docker
    - - i_dev_erlang
    - - i_dev_google_cloud_platform
    - - i_dev_grails
    - - i_dev_illustrator
    - - i_dev_intellij
    - - i_dev_materializecss
    - - i_dev_openshift
    - - i_dev_photoshop
    - - i_dev_rackspace
    - - i_dev_react
    - - i_dev_redhat
    - - i_dev_scriptcs
    - - i_dev_sqllite
    - - i_dev_vim
    - - i_fae_smaller
    - - i_fae_snowing
    - - i_fae_soda
    - - i_fae_sofa
    - - i_fae_soup
    - - i_fae_spermatozoon
    - - i_fae_spin_double
    - - i_fae_stomach
    - - i_fae_storm
    - - i_fae_telescope
    - - i_fae_thermometer
    - - i_fae_thermometer_high
    - - i_fae_thermometer_low
    - - i_fae_thin_close
    - - i_fae_toilet
    - - i_fae_tools
    - - i_fae_tooth
    - - i_fae_uterus
    - - i_fae_w3c
    - - i_fae_walking
    - - i_fae_virus
    - - i_fae_telegram_circle
    - - i_fae_slash
    - - i_fae_telegram
    - - i_fae_shirt
    - - i_fae_tacos
    - - i_fae_sushi
    - - i_fae_triangle_ruler
    - - i_fae_tree
    - - i_fae_sun_cloud
    - - i_fae_ruby_o
    - - i_fae_ruler
    - - i_fae_umbrella
    - - i_fae_medicine
    - - i_fae_microscope
    - - i_fae_milk_bottle
    - - i_fae_minimize
    - - i_fae_molecule
    - - i_fae_moon_cloud
    - - i_fae_mushroom
    - - i_fae_mustache
    - - i_fae_mysql
    - - i_fae_nintendo
    - - i_fae_palette_color
    - - i_fae_pi
    - - i_fae_pizza
    - - i_fae_planet
    - - i_fae_plant
    - - i_fae_playstation
    - - i_fae_poison
    - - i_fae_popcorn
    - - i_fae_popsicle
    - - i_fae_pulse
    - - i_fae_python
    - - i_fae_quora_circle
    - - i_fae_quora_square
    - - i_fae_radioactive
    - - i_fae_raining
    - - i_fae_real_heart
    - - i_fae_refrigerator
    - - i_fae_restore
    - - i_fae_ring
    - - i_fae_ruby
    - - i_fae_fingerprint
    - - i_fae_floppy
    - - i_fae_footprint
    - - i_fae_freecodecamp
    - - i_fae_galaxy
    - - i_fae_galery
    - - i_fae_glass
    - - i_fae_google_drive
    - - i_fae_google_play
    - - i_fae_gps
    - - i_fae_grav
    - - i_fae_guitar
    - - i_fae_gut
    - - i_fae_halter
    - - i_fae_hamburger
    - - i_fae_hat
    - - i_fae_hexagon
    - - i_fae_high_heel
    - - i_fae_hotdog
    - - i_fae_ice_cream
    - - i_fae_id_card
    - - i_fae_imdb
    - - i_fae_infinity
    - - i_fae_java
    - - i_fae_layers
    - - i_fae_lips
    - - i_fae_lipstick
    - - i_fae_liver
    - - i_fae_lung
    - - i_fae_makeup_brushes
    - - i_fae_maximize
    - - i_fae_wallet
    - - i_fae_chess_horse
    - - i_fae_chess_king
    - - i_fae_chess_pawn
    - - i_fae_chess_queen
    - - i_fae_chess_tower
    - - i_fae_chesse
    - - i_fae_chilli
    - - i_fae_chip
    - - i_fae_cicling
    - - i_fae_cloud
    - - i_fae_cockroach
    - - i_fae_coffe_beans
    - - i_fae_coins
    - - i_fae_comb
    - - i_fae_comet
    - - i_fae_crown
    - - i_fae_cup_coffe
    - - i_fae_dice
    - - i_fae_disco
    - - i_fae_dna
    - - i_fae_donut
    - - i_fae_dress
    - - i_fae_drop
    - - i_fae_ello
    - - i_fae_envelope_open
    - - i_fae_envelope_open_o
    - - i_fae_equal
    - - i_fae_equal_bigger
    - - i_fae_feedly
    - - i_fae_file_export
    - - i_fae_file_import
    - - i_fae_wind
    - - i_fae_atom
    - - i_fae_bacteria
    - - i_fae_banana
    - - i_fae_bath
    - - i_fae_bed
    - - i_fae_benzene
    - - i_fae_bigger
    - - i_fae_biohazard
    - - i_fae_blogger_circle
    - - i_fae_blogger_square
    - - i_fae_bones
    - - i_fae_book_open
    - - i_fae_book_open_o
    - - i_fae_brain
    - - i_fae_bread
    - - i_fae_butterfly
    - - i_fae_carot
    - - i_fae_cc_by
    - - i_fae_cc_cc
    - - i_fae_cc_nc
    - - i_fae_cc_nc_eu
    - - i_fae_cc_nc_jp
    - - i_fae_cc_nd
    - - i_fae_cc_remix
    - - i_fae_cc_sa
    - - i_fae_cc_share
    - - i_fae_cc_zero
    - - i_fae_checklist_o
    - - i_fae_cherry
    - - i_fae_chess_bishop
    - - i_fae_xbox
    - - i_fae_apple_fruit
    - - i_fae_chicken_thigh
    - - i_fae_gift_card
    - - i_fae_injection
    - - i_fae_isle
    - - i_fae_lollipop
    - - i_fae_loyalty_card
    - - i_fae_meat
    - - i_fae_mountains
    - - i_fae_orange
    - - i_fae_peach
    - - i_fae_pear
    - - i_fa_glass
    - - i_fa_music
    - - i_fa_search
    - - i_fa_envelope_o
    - - i_fa_heart
    - - i_fa_star
    - - i_fa_star_o
    - - i_fa_user
    - - i_fa_film
    - - i_fa_th_large
    - - i_fa_th
    - - i_fa_th_list
    - - i_fa_check
    - - i_fa_times
    - - i_fa_search_plus
    - - i_fa_search_minus
    - - i_fa_power_off
    - - i_fa_signal
    - - i_fa_cog
    - - i_fa_trash_o
    - - i_fa_home
    - - i_fa_file_o
    - - i_fa_clock_o
    - - i_fa_road
    - - i_fa_download
    - - i_fa_arrow_circle_o_down
    - - i_fa_arrow_circle_o_up
    - - i_fa_inbox
    - - i_fa_play_circle_o
    - - i_fa_repeat
    - - i_fa_refresh
    - - i_fa_list_alt
    - - i_fa_lock
    - - i_fa_flag
    - - i_fa_headphones
    - - i_fa_volume_off
    - - i_fa_volume_down
    - - i_fa_volume_up
    - - i_fa_qrcode
    - - i_fa_barcode
    - - i_fa_tag
    - - i_fa_tags
    - - i_fa_book
    - - i_fa_bookmark
    - - i_fa_print
    - - i_fa_camera
    - - i_fa_font
    - - i_fa_bold
    - - i_fa_italic
    - - i_fa_text_height
    - - i_fa_text_width
    - - i_fa_align_left
    - - i_fa_align_center
    - - i_fa_align_right
    - - i_fa_align_justify
    - - i_fa_list
    - - i_fa_outdent
    - - i_fa_indent
    - - i_fa_video_camera
    - - i_fa_picture_o
    - - i_fa_pencil
    - - i_fa_map_marker
    - - i_fa_adjust
    - - i_fa_tint
    - - i_fa_pencil_square_o
    - - i_fa_share_square_o
    - - i_fa_check_square_o
    - - i_fa_arrows
    - - i_fa_step_backward
    - - i_fa_fast_backward
    - - i_fa_backward
    - - i_fa_play
    - - i_fa_pause
    - - i_fa_stop
    - - i_fa_forward
    - - i_fa_fast_forward
    - - i_fa_step_forward
    - - i_fa_eject
    - - i_fa_chevron_left
    - - i_fa_chevron_right
    - - i_fa_plus_circle
    - - i_fa_minus_circle
    - - i_fa_times_circle
    - - i_fa_check_circle
    - - i_fa_question_circle
    - - i_fa_info_circle
    - - i_fa_crosshairs
    - - i_fa_times_circle_o
    - - i_fa_check_circle_o
    - - i_fa_ban
    - - i_fa_arrow_left
    - - i_fa_arrow_right
    - - i_fa_arrow_up
    - - i_fa_arrow_down
    - - i_fa_share
    - - i_fa_expand
    - - i_fa_compress
    - - i_fa_plus
    - - i_fa_minus
    - - i_fa_asterisk
    - - i_fa_exclamation_circle
    - - i_fa_gift
    - - i_fa_leaf
    - - i_fa_fire
    - - i_fa_eye
    - - i_fa_eye_slash
    - - i_fa_exclamation_triangle
    - - i_fa_plane
    - - i_fa_calendar
    - - i_fa_random
    - - i_fa_comment
    - - i_fa_magnet
    - - i_fa_chevron_up
    - - i_fa_chevron_down
    - - i_fa_retweet
    - - i_fa_shopping_cart
    - - i_fa_folder
    - - i_fa_folder_open
    - - i_fa_arrows_v
    - - i_fa_arrows_h
    - - i_fa_bar_chart
    - - i_fa_twitter_square
    - - i_fa_facebook_square
    - - i_fa_camera_retro
    - - i_fa_key
    - - i_fa_cogs
    - - i_fa_comments
    - - i_fa_thumbs_o_up
    - - i_fa_thumbs_o_down
    - - i_fa_star_half
    - - i_fa_heart_o
    - - i_fa_sign_out
    - - i_fa_linkedin_square
    - - i_fa_thumb_tack
    - - i_fa_external_link
    - - i_fa_sign_in
    - - i_fa_trophy
    - - i_fa_github_square
    - - i_fa_upload
    - - i_fa_lemon_o
    - - i_fa_phone
    - - i_fa_square_o
    - - i_fa_bookmark_o
    - - i_fa_phone_square
    - - i_fa_twitter
    - - i_fa_facebook
    - - i_fa_github
    - - i_fa_unlock
    - - i_fa_credit_card
    - - i_fa_rss
    - - i_fa_hdd_o
    - - i_fa_bullhorn
    - - i_fa_bell_o
    - - i_fa_certificate
    - - i_fa_hand_o_right
    - - i_fa_hand_o_left
    - - i_fa_hand_o_up
    - - i_fa_hand_o_down
    - - i_fa_arrow_circle_left
    - - i_fa_arrow_circle_right
    - - i_fa_arrow_circle_up
    - - i_fa_arrow_circle_down
    - - i_fa_globe
    - - i_fa_wrench
    - - i_fa_tasks
    - - i_fa_filter
    - - i_fa_briefcase
    - - i_fa_arrows_alt
    - - i_fa_users
    - - i_fa_link
    - - i_fa_cloud
    - - i_fa_flask
    - - i_fa_scissors
    - - i_fa_files_o
    - - i_fa_paperclip
    - - i_fa_floppy_o
    - - i_fa_square
    - - i_fa_bars
    - - i_fa_list_ul
    - - i_fa_list_ol
    - - i_fa_strikethrough
    - - i_fa_underline
    - - i_fa_table
    - - i_fa_magic
    - - i_fa_truck
    - - i_fa_pinterest
    - - i_fa_pinterest_square
    - - i_fa_google_plus_square
    - - i_fa_google_plus
    - - i_fa_money
    - - i_fa_caret_down
    - - i_fa_caret_up
    - - i_fa_caret_left
    - - i_fa_caret_right
    - - i_fa_columns
    - - i_fa_sort
    - - i_fa_sort_desc
    - - i_fa_sort_asc
    - - i_fa_envelope
    - - i_fa_linkedin
    - - i_fa_undo
    - - i_fa_gavel
    - - i_fa_tachometer
    - - i_fa_comment_o
    - - i_fa_comments_o
    - - i_fa_bolt
    - - i_fa_sitemap
    - - i_fa_umbrella
    - - i_fa_clipboard
    - - i_fa_lightbulb_o
    - - i_fa_exchange
    - - i_fa_cloud_download
    - - i_fa_cloud_upload
    - - i_fa_user_md
    - - i_fa_stethoscope
    - - i_fa_suitcase
    - - i_fa_bell
    - - i_fa_coffee
    - - i_fa_cutlery
    - - i_fa_file_text_o
    - - i_fa_building_o
    - - i_fa_hospital_o
    - - i_fa_ambulance
    - - i_fa_medkit
    - - i_fa_fighter_jet
    - - i_fa_beer
    - - i_fa_h_square
    - - i_fa_plus_square
    - - i_fa_angle_double_left
    - - i_fa_angle_double_right
    - - i_fa_angle_double_up
    - - i_fa_angle_double_down
    - - i_fa_angle_left
    - - i_fa_angle_right
    - - i_fa_angle_up
    - - i_fa_angle_down
    - - i_fa_desktop
    - - i_fa_laptop
    - - i_fa_tablet
    - - i_fa_mobile
    - - i_fa_circle_o
    - - i_fa_quote_left
    - - i_fa_quote_right
    - - i_fa_spinner
    - - i_fa_circle
    - - i_fa_reply
    - - i_fa_github_alt
    - - i_fa_folder_o
    - - i_fa_folder_open_o
    - - i_fa_smile_o
    - - i_fa_frown_o
    - - i_fa_meh_o
    - - i_fa_gamepad
    - - i_fa_keyboard_o
    - - i_fa_flag_o
    - - i_fa_flag_checkered
    - - i_fa_terminal
    - - i_fa_code
    - - i_fa_reply_all
    - - i_fa_star_half_o
    - - i_fa_location_arrow
    - - i_fa_crop
    - - i_fa_code_fork
    - - i_fa_chain_broken
    - - i_fa_question
    - - i_fa_info
    - - i_fa_exclamation
    - - i_fa_superscript
    - - i_fa_subscript
    - - i_fa_eraser
    - - i_fa_puzzle_piece
    - - i_fa_microphone
    - - i_fa_microphone_slash
    - - i_fa_shield
    - - i_fa_calendar_o
    - - i_fa_fire_extinguisher
    - - i_fa_rocket
    - - i_fa_maxcdn
    - - i_fa_chevron_circle_left
    - - i_fa_chevron_circle_right
    - - i_fa_chevron_circle_up
    - - i_fa_chevron_circle_down
    - - i_fa_html5
    - - i_fa_css3
    - - i_fa_anchor
    - - i_fa_unlock_alt
    - - i_fa_bullseye
    - - i_fa_ellipsis_h
    - - i_fa_ellipsis_v
    - - i_fa_rss_square
    - - i_fa_play_circle
    - - i_fa_ticket
    - - i_fa_minus_square
    - - i_fa_minus_square_o
    - - i_fa_level_up
    - - i_fa_level_down
    - - i_fa_check_square
    - - i_fa_pencil_square
    - - i_fa_external_link_square
    - - i_fa_share_square
    - - i_fa_compass
    - - i_fa_caret_square_o_down
    - - i_fa_caret_square_o_up
    - - i_fa_caret_square_o_right
    - - i_fa_eur
    - - i_fa_gbp
    - - i_fa_usd
    - - i_fa_inr
    - - i_fa_jpy
    - - i_fa_rub
    - - i_fa_krw
    - - i_fa_btc
    - - i_fa_file
    - - i_fa_file_text
    - - i_fa_sort_alpha_asc
    - - i_fa_sort_alpha_desc
    - - i_fa_sort_amount_asc
    - - i_fa_sort_amount_desc
    - - i_fa_sort_numeric_asc
    - - i_fa_sort_numeric_desc
    - - i_fa_thumbs_up
    - - i_fa_thumbs_down
    - - i_fa_youtube_square
    - - i_fa_youtube
    - - i_fa_xing
    - - i_fa_xing_square
    - - i_fa_youtube_play
    - - i_fa_dropbox
    - - i_fa_stack_overflow
    - - i_fa_instagram
    - - i_fa_flickr
    - - i_fa_adn
    - - i_fa_bitbucket
    - - i_fa_bitbucket_square
    - - i_fa_tumblr
    - - i_fa_tumblr_square
    - - i_fa_long_arrow_down
    - - i_fa_long_arrow_up
    - - i_fa_long_arrow_left
    - - i_fa_long_arrow_right
    - - i_fa_apple
    - - i_fa_windows
    - - i_fa_android
    - - i_fa_linux
    - - i_fa_dribbble
    - - i_fa_skype
    - - i_fa_foursquare
    - - i_fa_trello
    - - i_fa_female
    - - i_fa_male
    - - i_fa_gratipay
    - - i_fa_sun_o
    - - i_fa_moon_o
    - - i_fa_archive
    - - i_fa_bug
    - - i_fa_vk
    - - i_fa_weibo
    - - i_fa_renren
    - - i_fa_pagelines
    - - i_fa_stack_exchange
    - - i_fa_arrow_circle_o_right
    - - i_fa_arrow_circle_o_left
    - - i_fa_caret_square_o_left
    - - i_fa_dot_circle_o
    - - i_fa_wheelchair
    - - i_fa_vimeo_square
    - - i_fa_try
    - - i_fa_plus_square_o
    - - i_fa_space_shuttle
    - - i_fa_slack
    - - i_fa_envelope_square
    - - i_fa_wordpress
    - - i_fa_openid
    - - i_fa_university
    - - i_fa_graduation_cap
    - - i_fa_yahoo
    - - i_fa_google
    - - i_fa_reddit
    - - i_fa_reddit_square
    - - i_fa_stumbleupon_circle
    - - i_fa_stumbleupon
    - - i_fa_delicious
    - - i_fa_digg
    - - i_fa_pied_piper_pp
    - - i_fa_pied_piper_alt
    - - i_fa_drupal
    - - i_fa_joomla
    - - i_fa_language
    - - i_fa_fax
    - - i_fa_building
    - - i_fa_child
    - - i_fa_paw
    - - i_fa_spoon
    - - i_fa_cube
    - - i_fa_cubes
    - - i_fa_behance
    - - i_fa_behance_square
    - - i_fa_steam
    - - i_fa_steam_square
    - - i_fa_recycle
    - - i_fa_car
    - - i_fa_taxi
    - - i_fa_tree
    - - i_fa_spotify
    - - i_fa_deviantart
    - - i_fa_soundcloud
    - - i_fa_database
    - - i_fa_file_pdf_o
    - - i_fa_file_word_o
    - - i_fa_file_excel_o
    - - i_fa_file_powerpoint_o
    - - i_fa_file_image_o
    - - i_fa_file_archive_o
    - - i_fa_file_audio_o
    - - i_fa_file_video_o
    - - i_fa_file_code_o
    - - i_fa_vine
    - - i_fa_codepen
    - - i_fa_jsfiddle
    - - i_fa_life_ring
    - - i_fa_circle_o_notch
    - - i_fa_rebel
    - - i_fa_empire
    - - i_fa_git_square
    - - i_fa_git
    - - i_fa_hacker_news
    - - i_fa_tencent_weibo
    - - i_fa_qq
    - - i_fa_weixin
    - - i_fa_paper_plane
    - - i_fa_paper_plane_o
    - - i_fa_history
    - - i_fa_circle_thin
    - - i_fa_header
    - - i_fa_paragraph
    - - i_fa_sliders
    - - i_fa_share_alt
    - - i_fa_share_alt_square
    - - i_fa_bomb
    - - i_fa_futbol_o
    - - i_fa_tty
    - - i_fa_binoculars
    - - i_fa_plug
    - - i_fa_slideshare
    - - i_fa_twitch
    - - i_fa_yelp
    - - i_fa_newspaper_o
    - - i_fa_wifi
    - - i_fa_calculator
    - - i_fa_paypal
    - - i_fa_google_wallet
    - - i_fa_cc_visa
    - - i_fa_cc_mastercard
    - - i_fa_cc_discover
    - - i_fa_cc_amex
    - - i_fa_cc_paypal
    - - i_fa_cc_stripe
    - - i_fa_bell_slash
    - - i_fa_bell_slash_o
    - - i_fa_trash
    - - i_fa_copyright
    - - i_fa_at
    - - i_fa_eyedropper
    - - i_fa_paint_brush
    - - i_fa_birthday_cake
    - - i_fa_area_chart
    - - i_fa_pie_chart
    - - i_fa_line_chart
    - - i_fa_lastfm
    - - i_fa_lastfm_square
    - - i_fa_toggle_off
    - - i_fa_toggle_on
    - - i_fa_bicycle
    - - i_fa_bus
    - - i_fa_ioxhost
    - - i_fa_angellist
    - - i_fa_cc
    - - i_fa_ils
    - - i_fa_meanpath
    - - i_fa_buysellads
    - - i_fa_connectdevelop
    - - i_fa_dashcube
    - - i_fa_forumbee
    - - i_fa_leanpub
    - - i_fa_sellsy
    - - i_fa_shirtsinbulk
    - - i_fa_simplybuilt
    - - i_fa_skyatlas
    - - i_fa_cart_plus
    - - i_fa_cart_arrow_down
    - - i_fa_diamond
    - - i_fa_ship
    - - i_fa_user_secret
    - - i_fa_motorcycle
    - - i_fa_street_view
    - - i_fa_heartbeat
    - - i_fa_venus
    - - i_fa_mars
    - - i_fa_mercury
    - - i_fa_transgender
    - - i_fa_transgender_alt
    - - i_fa_venus_double
    - - i_fa_mars_double
    - - i_fa_venus_mars
    - - i_fa_mars_stroke
    - - i_fa_mars_stroke_v
    - - i_fa_mars_stroke_h
    - - i_fa_neuter
    - - i_fa_genderless
    - - i_fa_facebook_official
    - - i_fa_pinterest_p
    - - i_fa_whatsapp
    - - i_fa_server
    - - i_fa_user_plus
    - - i_fa_user_times
    - - i_fa_bed
    - - i_fa_viacoin
    - - i_fa_train
    - - i_fa_subway
    - - i_fa_medium
    - - i_fa_y_combinator
    - - i_fa_optin_monster
    - - i_fa_opencart
    - - i_fa_expeditedssl
    - - i_fa_battery_full
    - - i_fa_battery_three_quarters
    - - i_fa_battery_half
    - - i_fa_battery_quarter
    - - i_fa_battery_empty
    - - i_fa_mouse_pointer
    - - i_fa_i_cursor
    - - i_fa_object_group
    - - i_fa_object_ungroup
    - - i_fa_sticky_note
    - - i_fa_sticky_note_o
    - - i_fa_cc_jcb
    - - i_fa_cc_diners_club
    - - i_fa_clone
    - - i_fa_balance_scale
    - - i_fa_hourglass_o
    - - i_fa_hourglass_start
    - - i_fa_hourglass_half
    - - i_fa_hourglass_end
    - - i_fa_hourglass
    - - i_fa_hand_rock_o
    - - i_fa_hand_paper_o
    - - i_fa_hand_scissors_o
    - - i_fa_hand_lizard_o
    - - i_fa_hand_spock_o
    - - i_fa_hand_pointer_o
    - - i_fa_hand_peace_o
    - - i_fa_trademark
    - - i_fa_registered
    - - i_fa_creative_commons
    - - i_fa_gg
    - - i_fa_gg_circle
    - - i_fa_tripadvisor
    - - i_fa_odnoklassniki
    - - i_fa_odnoklassniki_square
    - - i_fa_get_pocket
    - - i_fa_wikipedia_w
    - - i_fa_safari
    - - i_fa_chrome
    - - i_fa_firefox
    - - i_fa_opera
    - - i_fa_internet_explorer
    - - i_fa_television
    - - i_fa_contao
    - - i_fa_500px
    - - i_fa_amazon
    - - i_fa_calendar_plus_o
    - - i_fa_calendar_minus_o
    - - i_fa_calendar_times_o
    - - i_fa_calendar_check_o
    - - i_fa_industry
    - - i_fa_map_pin
    - - i_fa_map_signs
    - - i_fa_map_o
    - - i_fa_map
    - - i_fa_commenting
    - - i_fa_commenting_o
    - - i_fa_houzz
    - - i_fa_vimeo
    - - i_fa_black_tie
    - - i_fa_fonticons
    - - i_fa_reddit_alien
    - - i_fa_edge
    - - i_fa_credit_card_alt
    - - i_fa_codiepie
    - - i_fa_modx
    - - i_fa_fort_awesome
    - - i_fa_usb
    - - i_fa_product_hunt
    - - i_fa_mixcloud
    - - i_fa_scribd
    - - i_fa_pause_circle
    - - i_fa_pause_circle_o
    - - i_fa_stop_circle
    - - i_fa_stop_circle_o
    - - i_fa_shopping_bag
    - - i_fa_shopping_basket
    - - i_fa_hashtag
    - - i_fa_bluetooth
    - - i_fa_bluetooth_b
    - - i_fa_percent
    - - i_fa_gitlab
    - - i_fa_wpbeginner
    - - i_fa_wpforms
    - - i_fa_envira
    - - i_fa_universal_access
    - - i_fa_wheelchair_alt
    - - i_fa_question_circle_o
    - - i_fa_blind
    - - i_fa_audio_description
    - - i_fa_volume_control_phone
    - - i_fa_braille
    - - i_fa_assistive_listening_systems
    - - i_fa_american_sign_language_interpreting
    - - i_fa_deaf
    - - i_fa_glide
    - - i_fa_glide_g
    - - i_fa_sign_language
    - - i_fa_low_vision
    - - i_fa_viadeo
    - - i_fa_viadeo_square
    - - i_fa_snapchat
    - - i_fa_snapchat_ghost
    - - i_fa_snapchat_square
    - - i_fa_pied_piper
    - - i_fa_first_order
    - - i_fa_yoast
    - - i_fa_themeisle
    - - i_fa_google_plus_official
    - - i_fa_font_awesome
    - - i_fa_handshake_o
    - - i_fa_envelope_open
    - - i_fa_envelope_open_o
    - - i_fa_linode
    - - i_fa_address_book
    - - i_fa_address_book_o
    - - i_fa_address_card
    - - i_fa_address_card_o
    - - i_fa_user_circle
    - - i_fa_user_circle_o
    - - i_fa_user_o
    - - i_fa_id_badge
    - - i_fa_id_card
    - - i_fa_id_card_o
    - - i_fa_quora
    - - i_fa_free_code_camp
    - - i_fa_telegram
    - - i_fa_thermometer_full
    - - i_fa_thermometer_three_quarters
    - - i_fa_thermometer_half
    - - i_fa_thermometer_quarter
    - - i_fa_thermometer_empty
    - - i_fa_shower
    - - i_fa_bath
    - - i_fa_podcast
    - - i_fa_window_maximize
    - - i_fa_window_minimize
    - - i_fa_window_restore
    - - i_fa_window_close
    - - i_fa_window_close_o
    - - i_fa_bandcamp
    - - i_fa_grav
    - - i_fa_etsy
    - - i_fa_imdb
    - - i_fa_ravelry
    - - i_fa_eercast
    - - i_fa_microchip
    - - i_fa_snowflake_o
    - - i_fa_superpowers
    - - i_fa_wpexplorer
    - - i_fa_meetup
    -# IEC Power Symbols (5 icons)
    -# Codepoints: 23FB-23FE 2B58
    -⏻ - i_iec_power
    -⏼ - i_iec_toggle_power
    -⏽ - i_iec_power_on
    -⏾ - i_iec_sleep_mode
    -⭘ - i_iec_power_off
    - - i_linux_archlinux
    - - i_linux_centos
    - - i_linux_debian
    - - i_linux_fedora
    - - i_linux_linuxmint
    - - i_linux_linuxmint_inverse
    - - i_linux_mageia
    - - i_linux_mandriva
    - - i_linux_opensuse
    - - i_linux_redhat
    - - i_linux_slackware
    - - i_linux_slackware_inverse
    - - i_linux_ubuntu
    - - i_linux_ubuntu_inverse
    - - i_linux_freebsd
    - - i_linux_coreos
    - - i_linux_gentoo
    - - i_linux_elementary
    - - i_linux_fedora_inverse
    - - i_linux_sabayon
    -♥ - i_oct_heart
    -⚡ - i_oct_zap
    - - i_oct_light_bulb
    - - i_oct_repo
    - - i_oct_repo_forked
    - - i_oct_repo_push
    - - i_oct_repo_pull
    - - i_oct_book
    - - i_oct_octoface
    - - i_oct_git_pull_request
    - - i_oct_mark_github
    - - i_oct_cloud_download
    - - i_oct_cloud_upload
    - - i_oct_keyboard
    - - i_oct_gist
    - - i_oct_file_code
    - - i_oct_file_text
    - - i_oct_file_media
    - - i_oct_file_zip
    - - i_oct_file_pdf
    - - i_oct_tag
    - - i_oct_file_directory
    - - i_oct_file_submodule
    - - i_oct_person
    - - i_oct_jersey
    - - i_oct_git_commit
    - - i_oct_git_branch
    - - i_oct_git_merge
    - - i_oct_mirror
    - - i_oct_issue_opened
    - - i_oct_issue_reopened
    - - i_oct_issue_closed
    - - i_oct_star
    - - i_oct_comment
    - - i_oct_question
    - - i_oct_alert
    - - i_oct_search
    - - i_oct_gear
    - - i_oct_radio_tower
    - - i_oct_tools
    - - i_oct_sign_out
    - - i_oct_rocket
    - - i_oct_rss
    - - i_oct_clippy
    - - i_oct_sign_in
    - - i_oct_organization
    - - i_oct_device_mobile
    - - i_oct_unfold
    - - i_oct_check
    - - i_oct_mail
    - - i_oct_mail_read
    - - i_oct_arrow_up
    - - i_oct_arrow_right
    - - i_oct_arrow_down
    - - i_oct_arrow_left
    - - i_oct_pin
    - - i_oct_gift
    - - i_oct_graph
    - - i_oct_triangle_left
    - - i_oct_credit_card
    - - i_oct_clock
    - - i_oct_ruby
    - - i_oct_broadcast
    - - i_oct_key
    - - i_oct_repo_force_push
    - - i_oct_repo_clone
    - - i_oct_diff
    - - i_oct_eye
    - - i_oct_comment_discussion
    - - i_oct_mail_reply
    - - i_oct_primitive_dot
    - - i_oct_primitive_square
    - - i_oct_device_camera
    - - i_oct_device_camera_video
    - - i_oct_pencil
    - - i_oct_info
    - - i_oct_triangle_right
    - - i_oct_triangle_down
    - - i_oct_link
    - - i_oct_plus
    - - i_oct_three_bars
    - - i_oct_code
    - - i_oct_location
    - - i_oct_list_unordered
    - - i_oct_list_ordered
    - - i_oct_quote
    - - i_oct_versions
    - - i_oct_calendar
    - - i_oct_lock
    - - i_oct_diff_added
    - - i_oct_diff_removed
    - - i_oct_diff_modified
    - - i_oct_diff_renamed
    - - i_oct_horizontal_rule
    - - i_oct_arrow_small_right
    - - i_oct_milestone
    - - i_oct_checklist
    - - i_oct_megaphone
    - - i_oct_chevron_right
    - - i_oct_bookmark
    - - i_oct_settings
    - - i_oct_dashboard
    - - i_oct_history
    - - i_oct_link_external
    - - i_oct_mute
    - - i_oct_x
    - - i_oct_circle_slash
    - - i_oct_pulse
    - - i_oct_sync
    - - i_oct_telescope
    - - i_oct_gist_secret
    - - i_oct_home
    - - i_oct_stop
    - - i_oct_bug
    - - i_oct_logo_github
    - - i_oct_file_binary
    - - i_oct_database
    - - i_oct_server
    - - i_oct_diff_ignored
    - - i_oct_ellipsis
    - - i_oct_no_newline
    - - i_oct_hubot
    - - i_oct_arrow_small_up
    - - i_oct_arrow_small_down
    - - i_oct_arrow_small_left
    - - i_oct_chevron_up
    - - i_oct_chevron_down
    - - i_oct_chevron_left
    - - i_oct_triangle_up
    - - i_oct_git_compare
    - - i_oct_logo_gist
    - - i_oct_file_symlink_file
    - - i_oct_file_symlink_directory
    - - i_oct_squirrel
    - - i_oct_globe
    - - i_oct_unmute
    - - i_oct_mention
    - - i_oct_package
    - - i_oct_browser
    - - i_oct_terminal
    - - i_oct_markdown
    - - i_oct_dash
    - - i_oct_fold
    - - i_oct_inbox
    - - i_oct_trashcan
    - - i_oct_paintcan
    - - i_oct_flame
    - - i_oct_briefcase
    - - i_oct_plug
    - - i_oct_circuit_board
    - - i_oct_mortar_board
    - - i_oct_law
    - - i_oct_thumbsup
    - - i_oct_thumbsdown
    - - i_oct_desktop_download
    - - i_oct_beaker
    - - i_oct_bell
    - - i_oct_watch
    - - i_oct_shield
    - - i_oct_bold
    - - i_oct_text_size
    - - i_oct_italic
    - - i_oct_tasklist
    - - i_oct_verified
    - - i_oct_smiley
    - - i_oct_unverified
    - - i_oct_ellipses
    - - i_oct_file
    - - i_oct_grabber
    - - i_oct_plus_small
    - - i_oct_reply
    - - i_oct_device_desktop
    - - i_custom_folder_npm
    - - i_custom_folder_git
    - - i_custom_folder_config
    - - i_custom_folder_github
    - - i_custom_folder_open
    - - i_custom_folder
    - - i_seti_stylus
    - - i_seti_project
    - - i_seti_sass
    - - i_seti_rails
    - - i_seti_ruby
    - - i_seti_python
    - - i_seti_heroku
    - - i_seti_php
    - - i_seti_markdown
    - - i_seti_license
    - - i_seti_json
    - - i_seti_javascript
    - - i_seti_image
    - - i_seti_html
    - - i_seti_mustache
    - - i_seti_gulp
    - - i_seti_grunt
    - - i_seti_folder
    - - i_seti_css
    - - i_seti_config
    - - i_seti_npm
    - - i_seti_ejs
    - - i_seti_xml
    - - i_seti_bower
    - - i_seti_coffee
    - - i_seti_twig
    - - i_custom_cpp
    - - i_custom_c
    - - i_seti_haskell
    - - i_seti_lua
    - - i_seti_karma
    - - i_seti_favicon
    - - i_seti_julia
    - - i_seti_react
    - - i_custom_go
    - - i_seti_go
    - - i_seti_typescript
    - - i_custom_msdos
    - - i_custom_windows
    - - i_custom_vim
    +
     - i_dev_bing_small
    + - i_dev_css_tricks
    + - i_dev_git
    + - i_dev_bitbucket
    + - i_dev_mysql
    + - i_dev_streamline
    + - i_dev_database
    + - i_dev_dropbox
    + - i_dev_github_alt
    + - i_dev_github_badge
    + - i_dev_github
    + - i_dev_wordpress
    + - i_dev_visualstudio
    + - i_dev_jekyll_small
    + - i_dev_android
    + - i_dev_windows
    + - i_dev_stackoverflow
    + - i_dev_apple
    + - i_dev_linux
    + - i_dev_appstore
    + - i_dev_ghost_small
    + - i_dev_yahoo
    + - i_dev_codepen
    + - i_dev_github_full
    + - i_dev_nodejs_small
    + - i_dev_nodejs
    + - i_dev_hackernews
    + - i_dev_ember
    + - i_dev_dojo
    + - i_dev_django
    + - i_dev_npm
    + - i_dev_ghost
    + - i_dev_modernizr
    + - i_dev_unity_small
    + - i_dev_rasberry_pi
    + - i_dev_blackberry
    + - i_dev_go
    + - i_dev_git_branch
    + - i_dev_git_pull_request
    + - i_dev_git_merge
    + - i_dev_git_compare
    + - i_dev_git_commit
    + - i_dev_cssdeck
    + - i_dev_yahoo_small
    + - i_dev_techcrunch
    + - i_dev_smashing_magazine
    + - i_dev_netmagazine
    + - i_dev_codrops
    + - i_dev_phonegap
    + - i_dev_google_drive
    + - i_dev_html5_multimedia
    + - i_dev_html5_device_access
    + - i_dev_html5_connectivity
    + - i_dev_html5_3d_effects
    + - i_dev_html5
    + - i_dev_scala
    + - i_dev_java
    + - i_dev_ruby
    + - i_dev_ubuntu
    + - i_dev_ruby_on_rails
    + - i_dev_python
    + - i_dev_php
    + - i_dev_markdown
    + - i_dev_laravel
    + - i_dev_magento
    + - i_dev_joomla
    + - i_dev_drupal
    + - i_dev_chrome
    + - i_dev_ie
    + - i_dev_firefox
    + - i_dev_opera
    + - i_dev_bootstrap
    + - i_dev_safari
    + - i_dev_css3
    + - i_dev_css3_full
    + - i_dev_sass
    + - i_dev_grunt
    + - i_dev_bower
    + - i_dev_javascript
    + - i_dev_javascript_shield
    + - i_dev_jquery
    + - i_dev_coffeescript
    + - i_dev_backbone
    + - i_dev_angular
    + - i_dev_jquery_ui
    + - i_dev_swift
    + - i_dev_symfony
    + - i_dev_symfony_badge
    + - i_dev_less
    + - i_dev_stylus
    + - i_dev_trello
    + - i_dev_atlassian
    + - i_dev_jira
    + - i_dev_envato
    + - i_dev_snap_svg
    + - i_dev_raphael
    + - i_dev_chart
    + - i_dev_compass
    + - i_dev_onedrive
    + - i_dev_gulp
    + - i_dev_atom
    + - i_dev_cisco
    + - i_dev_nancy
    + - i_dev_jenkins
    + - i_dev_clojure
    + - i_dev_perl
    + - i_dev_clojure_alt
    + - i_dev_celluloid
    + - i_dev_w3c
    + - i_dev_redis
    + - i_dev_postgresql
    + - i_dev_webplatform
    + - i_dev_requirejs
    + - i_dev_opensource
    + - i_dev_typo3
    + - i_dev_uikit
    + - i_dev_doctrine
    + - i_dev_groovy
    + - i_dev_nginx
    + - i_dev_haskell
    + - i_dev_zend
    + - i_dev_gnu
    + - i_dev_yeoman
    + - i_dev_heroku
    + - i_dev_msql_server
    + - i_dev_debian
    + - i_dev_travis
    + - i_dev_dotnet
    + - i_dev_codeigniter
    + - i_dev_javascript_badge
    + - i_dev_yii
    + - i_dev_composer
    + - i_dev_krakenjs_badge
    + - i_dev_krakenjs
    + - i_dev_mozilla
    + - i_dev_firebase
    + - i_dev_sizzlejs
    + - i_dev_creativecommons
    + - i_dev_creativecommons_badge
    + - i_dev_mitlicence
    + - i_dev_senchatouch
    + - i_dev_bugsense
    + - i_dev_extjs
    + - i_dev_mootools_badge
    + - i_dev_mootools
    + - i_dev_ruby_rough
    + - i_dev_komodo
    + - i_dev_coda
    + - i_dev_bintray
    + - i_dev_terminal
    + - i_dev_code
    + - i_dev_responsive
    + - i_dev_dart
    + - i_dev_aptana
    + - i_dev_mailchimp
    + - i_dev_netbeans
    + - i_dev_dreamweaver
    + - i_dev_brackets
    + - i_dev_eclipse
    + - i_dev_cloud9
    + - i_dev_scrum
    + - i_dev_prolog
    + - i_dev_terminal_badge
    + - i_dev_code_badge
    + - i_dev_mongodb
    + - i_dev_meteor
    + - i_dev_meteorfull
    + - i_dev_fsharp
    + - i_dev_rust
    + - i_dev_ionic
    + - i_dev_sublime
    + - i_dev_appcelerator
    + - i_dev_asterisk
    + - i_dev_aws
    + - i_dev_digital_ocean
    + - i_dev_dlang
    + - i_dev_docker
    + - i_dev_erlang
    + - i_dev_google_cloud_platform
    + - i_dev_grails
    + - i_dev_illustrator
    + - i_dev_intellij
    + - i_dev_materializecss
    + - i_dev_openshift
    + - i_dev_photoshop
    + - i_dev_rackspace
    + - i_dev_react
    + - i_dev_redhat
    + - i_dev_scriptcs
    + - i_dev_sqllite
    + - i_dev_vim
    + - i_fae_smaller
    + - i_fae_snowing
    + - i_fae_soda
    + - i_fae_sofa
    + - i_fae_soup
    + - i_fae_spermatozoon
    + - i_fae_spin_double
    + - i_fae_stomach
    + - i_fae_storm
    + - i_fae_telescope
    + - i_fae_thermometer
    + - i_fae_thermometer_high
    + - i_fae_thermometer_low
    + - i_fae_thin_close
    + - i_fae_toilet
    + - i_fae_tools
    + - i_fae_tooth
    + - i_fae_uterus
    + - i_fae_w3c
    + - i_fae_walking
    + - i_fae_virus
    + - i_fae_telegram_circle
    + - i_fae_slash
    + - i_fae_telegram
    + - i_fae_shirt
    + - i_fae_tacos
    + - i_fae_sushi
    + - i_fae_triangle_ruler
    + - i_fae_tree
    + - i_fae_sun_cloud
    + - i_fae_ruby_o
    + - i_fae_ruler
    + - i_fae_umbrella
    + - i_fae_medicine
    + - i_fae_microscope
    + - i_fae_milk_bottle
    + - i_fae_minimize
    + - i_fae_molecule
    + - i_fae_moon_cloud
    + - i_fae_mushroom
    + - i_fae_mustache
    + - i_fae_mysql
    + - i_fae_nintendo
    + - i_fae_palette_color
    + - i_fae_pi
    + - i_fae_pizza
    + - i_fae_planet
    + - i_fae_plant
    + - i_fae_playstation
    + - i_fae_poison
    + - i_fae_popcorn
    + - i_fae_popsicle
    + - i_fae_pulse
    + - i_fae_python
    + - i_fae_quora_circle
    + - i_fae_quora_square
    + - i_fae_radioactive
    + - i_fae_raining
    + - i_fae_real_heart
    + - i_fae_refrigerator
    + - i_fae_restore
    + - i_fae_ring
    + - i_fae_ruby
    + - i_fae_fingerprint
    + - i_fae_floppy
    + - i_fae_footprint
    + - i_fae_freecodecamp
    + - i_fae_galaxy
    + - i_fae_galery
    + - i_fae_glass
    + - i_fae_google_drive
    + - i_fae_google_play
    + - i_fae_gps
    + - i_fae_grav
    + - i_fae_guitar
    + - i_fae_gut
    + - i_fae_halter
    + - i_fae_hamburger
    + - i_fae_hat
    + - i_fae_hexagon
    + - i_fae_high_heel
    + - i_fae_hotdog
    + - i_fae_ice_cream
    + - i_fae_id_card
    + - i_fae_imdb
    + - i_fae_infinity
    + - i_fae_java
    + - i_fae_layers
    + - i_fae_lips
    + - i_fae_lipstick
    + - i_fae_liver
    + - i_fae_lung
    + - i_fae_makeup_brushes
    + - i_fae_maximize
    + - i_fae_wallet
    + - i_fae_chess_horse
    + - i_fae_chess_king
    + - i_fae_chess_pawn
    + - i_fae_chess_queen
    + - i_fae_chess_tower
    + - i_fae_cheese
    + - i_fae_chilli
    + - i_fae_chip
    + - i_fae_cicling
    + - i_fae_cloud
    + - i_fae_cockroach
    + - i_fae_coffe_beans
    + - i_fae_coins
    + - i_fae_comb
    + - i_fae_comet
    + - i_fae_crown
    + - i_fae_cup_coffe
    + - i_fae_dice
    + - i_fae_disco
    + - i_fae_dna
    + - i_fae_donut
    + - i_fae_dress
    + - i_fae_drop
    + - i_fae_ello
    + - i_fae_envelope_open
    + - i_fae_envelope_open_o
    + - i_fae_equal
    + - i_fae_equal_bigger
    + - i_fae_feedly
    + - i_fae_file_export
    + - i_fae_file_import
    + - i_fae_wind
    + - i_fae_atom
    + - i_fae_bacteria
    + - i_fae_banana
    + - i_fae_bath
    + - i_fae_bed
    + - i_fae_benzene
    + - i_fae_bigger
    + - i_fae_biohazard
    + - i_fae_blogger_circle
    + - i_fae_blogger_square
    + - i_fae_bones
    + - i_fae_book_open
    + - i_fae_book_open_o
    + - i_fae_brain
    + - i_fae_bread
    + - i_fae_butterfly
    + - i_fae_carot
    + - i_fae_cc_by
    + - i_fae_cc_cc
    + - i_fae_cc_nc
    + - i_fae_cc_nc_eu
    + - i_fae_cc_nc_jp
    + - i_fae_cc_nd
    + - i_fae_cc_remix
    + - i_fae_cc_sa
    + - i_fae_cc_share
    + - i_fae_cc_zero
    + - i_fae_checklist_o
    + - i_fae_cherry
    + - i_fae_chess_bishop
    + - i_fae_xbox
    + - i_fae_apple_fruit
    + - i_fae_chicken_thigh
    + - i_fae_gift_card
    + - i_fae_injection
    + - i_fae_isle
    + - i_fae_lollipop
    + - i_fae_loyalty_card
    + - i_fae_meat
    + - i_fae_mountains
    + - i_fae_orange
    + - i_fae_peach
    + - i_fae_pear
    + - i_fa_glass
    + - i_fa_music
    + - i_fa_search
    + - i_fa_envelope_o
    + - i_fa_heart
    + - i_fa_star
    + - i_fa_star_o
    + - i_fa_user
    + - i_fa_film
    + - i_fa_th_large
    + - i_fa_th
    + - i_fa_th_list
    + - i_fa_check
    + - i_fa_times i_fa_close_fa_times i_fa_remove_fa_times
    + - i_fa_search_plus
    + - i_fa_search_minus
    + - i_fa_power_off
    + - i_fa_signal
    + - i_fa_cog i_fa_gear_fa_cog
    + - i_fa_trash_o
    + - i_fa_home
    + - i_fa_file_o
    + - i_fa_clock_o
    + - i_fa_road
    + - i_fa_download
    + - i_fa_arrow_circle_o_down
    + - i_fa_arrow_circle_o_up
    + - i_fa_inbox
    + - i_fa_play_circle_o
    + - i_fa_repeat i_fa_rotate_right_fa_repeat
    + - i_fa_refresh
    + - i_fa_list_alt
    + - i_fa_lock
    + - i_fa_flag
    + - i_fa_headphones
    + - i_fa_volume_off
    + - i_fa_volume_down
    + - i_fa_volume_up
    + - i_fa_qrcode
    + - i_fa_barcode
    + - i_fa_tag
    + - i_fa_tags
    + - i_fa_book
    + - i_fa_bookmark
    + - i_fa_print
    + - i_fa_camera
    + - i_fa_font
    + - i_fa_bold
    + - i_fa_italic
    + - i_fa_text_height
    + - i_fa_text_width
    + - i_fa_align_left
    + - i_fa_align_center
    + - i_fa_align_right
    + - i_fa_align_justify
    + - i_fa_list
    + - i_fa_outdent i_fa_dedent_fa_outdent
    + - i_fa_indent
    + - i_fa_video_camera
    + - i_fa_picture_o i_fa_image_fa_picture_o i_fa_photo_fa_picture_o
    + - i_fa_pencil
    + - i_fa_map_marker
    + - i_fa_adjust
    + - i_fa_tint
    + - i_fa_pencil_square_o i_fa_edit_fa_pencil_square_o
    + - i_fa_share_square_o
    + - i_fa_check_square_o
    + - i_fa_arrows
    + - i_fa_step_backward
    + - i_fa_fast_backward
    + - i_fa_backward
    + - i_fa_play
    + - i_fa_pause
    + - i_fa_stop
    + - i_fa_forward
    + - i_fa_fast_forward
    + - i_fa_step_forward
    + - i_fa_eject
    + - i_fa_chevron_left
    + - i_fa_chevron_right
    + - i_fa_plus_circle
    + - i_fa_minus_circle
    + - i_fa_times_circle
    + - i_fa_check_circle
    + - i_fa_question_circle
    + - i_fa_info_circle
    + - i_fa_crosshairs
    + - i_fa_times_circle_o
    + - i_fa_check_circle_o
    + - i_fa_ban
    + - i_fa_arrow_left
    + - i_fa_arrow_right
    + - i_fa_arrow_up
    + - i_fa_arrow_down
    + - i_fa_share i_fa_mail_forward_fa_share
    + - i_fa_expand
    + - i_fa_compress
    + - i_fa_plus
    + - i_fa_minus
    + - i_fa_asterisk
    + - i_fa_exclamation_circle
    + - i_fa_gift
    + - i_fa_leaf
    + - i_fa_fire
    + - i_fa_eye
    + - i_fa_eye_slash
    + - i_fa_exclamation_triangle i_fa_warning_fa_exclamation_triangle
    + - i_fa_plane
    + - i_fa_calendar
    + - i_fa_random
    + - i_fa_comment
    + - i_fa_magnet
    + - i_fa_chevron_up
    + - i_fa_chevron_down
    + - i_fa_retweet
    + - i_fa_shopping_cart
    + - i_fa_folder
    + - i_fa_folder_open
    + - i_fa_arrows_v
    + - i_fa_arrows_h
    + - i_fa_bar_chart i_fa_bar_chart_o_fa_bar_chart
    + - i_fa_twitter_square
    + - i_fa_facebook_square
    + - i_fa_camera_retro
    + - i_fa_key
    + - i_fa_cogs i_fa_gears_fa_cogs
    + - i_fa_comments
    + - i_fa_thumbs_o_up
    + - i_fa_thumbs_o_down
    + - i_fa_star_half
    + - i_fa_heart_o
    + - i_fa_sign_out
    + - i_fa_linkedin_square
    + - i_fa_thumb_tack
    + - i_fa_external_link
    + - i_fa_sign_in
    + - i_fa_trophy
    + - i_fa_github_square
    + - i_fa_upload
    + - i_fa_lemon_o
    + - i_fa_phone
    + - i_fa_square_o
    + - i_fa_bookmark_o
    + - i_fa_phone_square
    + - i_fa_twitter
    + - i_fa_facebook i_fa_facebook_f_fa_facebook
    + - i_fa_github
    + - i_fa_unlock
    + - i_fa_credit_card
    + - i_fa_rss i_fa_feed_fa_rss
    + - i_fa_hdd_o
    + - i_fa_bullhorn
    + - i_fa_bell_o
    + - i_fa_certificate
    + - i_fa_hand_o_right
    + - i_fa_hand_o_left
    + - i_fa_hand_o_up
    + - i_fa_hand_o_down
    + - i_fa_arrow_circle_left
    + - i_fa_arrow_circle_right
    + - i_fa_arrow_circle_up
    + - i_fa_arrow_circle_down
    + - i_fa_globe
    + - i_fa_wrench
    + - i_fa_tasks
    + - i_fa_filter
    + - i_fa_briefcase
    + - i_fa_arrows_alt
    + - i_fa_users i_fa_group_fa_users
    + - i_fa_link i_fa_chain_fa_link
    + - i_fa_cloud
    + - i_fa_flask
    + - i_fa_scissors i_fa_cut_fa_scissors
    + - i_fa_files_o i_fa_copy_fa_files_o
    + - i_fa_paperclip
    + - i_fa_floppy_o i_fa_save_fa_floppy_o
    + - i_fa_square
    + - i_fa_bars i_fa_navicon_fa_bars i_fa_reorder_fa_bars
    + - i_fa_list_ul
    + - i_fa_list_ol
    + - i_fa_strikethrough
    + - i_fa_underline
    + - i_fa_table
    + - i_fa_magic
    + - i_fa_truck
    + - i_fa_pinterest
    + - i_fa_pinterest_square
    + - i_fa_google_plus_square
    + - i_fa_google_plus
    + - i_fa_money
    + - i_fa_caret_down
    + - i_fa_caret_up
    + - i_fa_caret_left
    + - i_fa_caret_right
    + - i_fa_columns
    + - i_fa_sort i_fa_unsorted_fa_sort
    + - i_fa_sort_desc i_fa_sort_down_fa_sort_desc
    + - i_fa_sort_asc i_fa_sort_up_fa_sort_asc
    + - i_fa_envelope
    + - i_fa_linkedin
    + - i_fa_undo i_fa_rotate_left_fa_undo
    + - i_fa_gavel i_fa_legal_fa_gavel
    + - i_fa_tachometer i_fa_dashboard_fa_tachometer
    + - i_fa_comment_o
    + - i_fa_comments_o
    + - i_fa_bolt i_fa_flash_fa_bolt
    + - i_fa_sitemap
    + - i_fa_umbrella
    + - i_fa_clipboard i_fa_paste_fa_clipboard
    + - i_fa_lightbulb_o
    + - i_fa_exchange
    + - i_fa_cloud_download
    + - i_fa_cloud_upload
    + - i_fa_user_md
    + - i_fa_stethoscope
    + - i_fa_suitcase
    + - i_fa_bell
    + - i_fa_coffee
    + - i_fa_cutlery
    + - i_fa_file_text_o
    + - i_fa_building_o
    + - i_fa_hospital_o
    + - i_fa_ambulance
    + - i_fa_medkit
    + - i_fa_fighter_jet
    + - i_fa_beer
    + - i_fa_h_square
    + - i_fa_plus_square
    + - i_fa_angle_double_left
    + - i_fa_angle_double_right
    + - i_fa_angle_double_up
    + - i_fa_angle_double_down
    + - i_fa_angle_left
    + - i_fa_angle_right
    + - i_fa_angle_up
    + - i_fa_angle_down
    + - i_fa_desktop
    + - i_fa_laptop
    + - i_fa_tablet
    + - i_fa_mobile i_fa_mobile_phone_fa_mobile
    + - i_fa_circle_o
    + - i_fa_quote_left
    + - i_fa_quote_right
    + - i_fa_spinner
    + - i_fa_circle
    + - i_fa_reply i_fa_mail_reply_fa_reply
    + - i_fa_github_alt
    + - i_fa_folder_o
    + - i_fa_folder_open_o
    + - i_fa_smile_o
    + - i_fa_frown_o
    + - i_fa_meh_o
    + - i_fa_gamepad
    + - i_fa_keyboard_o
    + - i_fa_flag_o
    + - i_fa_flag_checkered
    + - i_fa_terminal
    + - i_fa_code
    + - i_fa_reply_all i_fa_mail_reply_all_fa_reply_all
    + - i_fa_star_half_o i_fa_star_half_empty_fa_star_half_o i_fa_star_half_full_fa_star_half_o
    + - i_fa_location_arrow
    + - i_fa_crop
    + - i_fa_code_fork
    + - i_fa_chain_broken i_fa_unlink_fa_chain_broken
    + - i_fa_question
    + - i_fa_info
    + - i_fa_exclamation
    + - i_fa_superscript
    + - i_fa_subscript
    + - i_fa_eraser
    + - i_fa_puzzle_piece
    + - i_fa_microphone
    + - i_fa_microphone_slash
    + - i_fa_shield
    + - i_fa_calendar_o
    + - i_fa_fire_extinguisher
    + - i_fa_rocket
    + - i_fa_maxcdn
    + - i_fa_chevron_circle_left
    + - i_fa_chevron_circle_right
    + - i_fa_chevron_circle_up
    + - i_fa_chevron_circle_down
    + - i_fa_html5
    + - i_fa_css3
    + - i_fa_anchor
    + - i_fa_unlock_alt
    + - i_fa_bullseye
    + - i_fa_ellipsis_h
    + - i_fa_ellipsis_v
    + - i_fa_rss_square
    + - i_fa_play_circle
    + - i_fa_ticket
    + - i_fa_minus_square
    + - i_fa_minus_square_o
    + - i_fa_level_up
    + - i_fa_level_down
    + - i_fa_check_square
    + - i_fa_pencil_square
    + - i_fa_external_link_square
    + - i_fa_share_square
    + - i_fa_compass
    + - i_fa_caret_square_o_down i_fa_toggle_down_fa_caret_square_o_down
    + - i_fa_caret_square_o_up i_fa_toggle_up_fa_caret_square_o_up
    + - i_fa_caret_square_o_right i_fa_toggle_right_fa_caret_square_o_right
    + - i_fa_eur i_fa_euro_fa_eur
    + - i_fa_gbp
    + - i_fa_usd i_fa_dollar_fa_usd
    + - i_fa_inr i_fa_rupee_fa_inr
    + - i_fa_jpy i_fa_cny_fa_jpy i_fa_rmb_fa_jpy i_fa_yen_fa_jpy
    + - i_fa_rub i_fa_rouble_fa_rub i_fa_ruble_fa_rub
    + - i_fa_krw i_fa_won_fa_krw
    + - i_fa_btc i_fa_bitcoin_fa_btc
    + - i_fa_file
    + - i_fa_file_text
    + - i_fa_sort_alpha_asc
    + - i_fa_sort_alpha_desc
    + - i_fa_sort_amount_asc
    + - i_fa_sort_amount_desc
    + - i_fa_sort_numeric_asc
    + - i_fa_sort_numeric_desc
    + - i_fa_thumbs_up
    + - i_fa_thumbs_down
    + - i_fa_youtube_square
    + - i_fa_youtube
    + - i_fa_xing
    + - i_fa_xing_square
    + - i_fa_youtube_play
    + - i_fa_dropbox
    + - i_fa_stack_overflow
    + - i_fa_instagram
    + - i_fa_flickr
    + - i_fa_adn
    + - i_fa_bitbucket
    + - i_fa_bitbucket_square
    + - i_fa_tumblr
    + - i_fa_tumblr_square
    + - i_fa_long_arrow_down
    + - i_fa_long_arrow_up
    + - i_fa_long_arrow_left
    + - i_fa_long_arrow_right
    + - i_fa_apple
    + - i_fa_windows
    + - i_fa_android
    + - i_fa_linux
    + - i_fa_dribbble
    + - i_fa_skype
    + - i_fa_foursquare
    + - i_fa_trello
    + - i_fa_female
    + - i_fa_male
    + - i_fa_gratipay i_fa_gittip_fa_gratipay
    + - i_fa_sun_o
    + - i_fa_moon_o
    + - i_fa_archive
    + - i_fa_bug
    + - i_fa_vk
    + - i_fa_weibo
    + - i_fa_renren
    + - i_fa_pagelines
    + - i_fa_stack_exchange
    + - i_fa_arrow_circle_o_right
    + - i_fa_arrow_circle_o_left
    + - i_fa_caret_square_o_left i_fa_toggle_left_fa_caret_square_o_left
    + - i_fa_dot_circle_o
    + - i_fa_wheelchair
    + - i_fa_vimeo_square
    + - i_fa_try i_fa_turkish_lira_fa_try
    + - i_fa_plus_square_o
    + - i_fa_space_shuttle
    + - i_fa_slack
    + - i_fa_envelope_square
    + - i_fa_wordpress
    + - i_fa_openid
    + - i_fa_university i_fa_bank_fa_university i_fa_institution_fa_university
    + - i_fa_graduation_cap i_fa_mortar_board_fa_graduation_cap
    + - i_fa_yahoo
    + - i_fa_google
    + - i_fa_reddit
    + - i_fa_reddit_square
    + - i_fa_stumbleupon_circle
    + - i_fa_stumbleupon
    + - i_fa_delicious
    + - i_fa_digg
    + - i_fa_pied_piper_pp
    + - i_fa_pied_piper_alt
    + - i_fa_drupal
    + - i_fa_joomla
    + - i_fa_language
    + - i_fa_fax
    + - i_fa_building
    + - i_fa_child
    + - i_fa_paw
    + - i_fa_spoon
    + - i_fa_cube
    + - i_fa_cubes
    + - i_fa_behance
    + - i_fa_behance_square
    + - i_fa_steam
    + - i_fa_steam_square
    + - i_fa_recycle
    + - i_fa_car i_fa_automobile_fa_car
    + - i_fa_taxi i_fa_cab_fa_taxi
    + - i_fa_tree
    + - i_fa_spotify
    + - i_fa_deviantart
    + - i_fa_soundcloud
    + - i_fa_database
    + - i_fa_file_pdf_o
    + - i_fa_file_word_o
    + - i_fa_file_excel_o
    + - i_fa_file_powerpoint_o
    + - i_fa_file_image_o i_fa_file_photo_o_fa_file_image_o i_fa_file_picture_o_fa_file_image_o
    + - i_fa_file_archive_o i_fa_file_zip_o_fa_file_archive_o
    + - i_fa_file_audio_o i_fa_file_sound_o_fa_file_audio_o
    + - i_fa_file_video_o i_fa_file_movie_o_fa_file_video_o
    + - i_fa_file_code_o
    + - i_fa_vine
    + - i_fa_codepen
    + - i_fa_jsfiddle
    + - i_fa_life_ring i_fa_life_bouy_fa_life_ring i_fa_life_buoy_fa_life_ring i_fa_life_saver_fa_life_ring i_fa_support_fa_life_ring
    + - i_fa_circle_o_notch
    + - i_fa_rebel i_fa_ra_fa_rebel i_fa_resistance_fa_rebel
    + - i_fa_empire i_fa_ge_fa_empire
    + - i_fa_git_square
    + - i_fa_git
    + - i_fa_hacker_news i_fa_y_combinator_square_fa_hacker_news i_fa_yc_square_fa_hacker_news
    + - i_fa_tencent_weibo
    + - i_fa_qq
    + - i_fa_weixin i_fa_wechat_fa_weixin
    + - i_fa_paper_plane i_fa_send_fa_paper_plane
    + - i_fa_paper_plane_o i_fa_send_o_fa_paper_plane_o
    + - i_fa_history
    + - i_fa_circle_thin
    + - i_fa_header
    + - i_fa_paragraph
    + - i_fa_sliders
    + - i_fa_share_alt
    + - i_fa_share_alt_square
    + - i_fa_bomb
    + - i_fa_futbol_o i_fa_soccer_ball_o_fa_futbol_o
    + - i_fa_tty
    + - i_fa_binoculars
    + - i_fa_plug
    + - i_fa_slideshare
    + - i_fa_twitch
    + - i_fa_yelp
    + - i_fa_newspaper_o
    + - i_fa_wifi
    + - i_fa_calculator
    + - i_fa_paypal
    + - i_fa_google_wallet
    + - i_fa_cc_visa
    + - i_fa_cc_mastercard
    + - i_fa_cc_discover
    + - i_fa_cc_amex
    + - i_fa_cc_paypal
    + - i_fa_cc_stripe
    + - i_fa_bell_slash
    + - i_fa_bell_slash_o
    + - i_fa_trash
    + - i_fa_copyright
    + - i_fa_at
    + - i_fa_eyedropper
    + - i_fa_paint_brush
    + - i_fa_birthday_cake
    + - i_fa_area_chart
    + - i_fa_pie_chart
    + - i_fa_line_chart
    + - i_fa_lastfm
    + - i_fa_lastfm_square
    + - i_fa_toggle_off
    + - i_fa_toggle_on
    + - i_fa_bicycle
    + - i_fa_bus
    + - i_fa_ioxhost
    + - i_fa_angellist
    + - i_fa_cc
    + - i_fa_ils i_fa_shekel_fa_ils i_fa_sheqel_fa_ils
    + - i_fa_meanpath
    + - i_fa_buysellads
    + - i_fa_connectdevelop
    + - i_fa_dashcube
    + - i_fa_forumbee
    + - i_fa_leanpub
    + - i_fa_sellsy
    + - i_fa_shirtsinbulk
    + - i_fa_simplybuilt
    + - i_fa_skyatlas
    + - i_fa_cart_plus
    + - i_fa_cart_arrow_down
    + - i_fa_diamond
    + - i_fa_ship
    + - i_fa_user_secret
    + - i_fa_motorcycle
    + - i_fa_street_view
    + - i_fa_heartbeat
    + - i_fa_venus
    + - i_fa_mars
    + - i_fa_mercury
    + - i_fa_transgender i_fa_intersex_fa_transgender
    + - i_fa_transgender_alt
    + - i_fa_venus_double
    + - i_fa_mars_double
    + - i_fa_venus_mars
    + - i_fa_mars_stroke
    + - i_fa_mars_stroke_v
    + - i_fa_mars_stroke_h
    + - i_fa_neuter
    + - i_fa_genderless
    + - i_fa_facebook_official
    + - i_fa_pinterest_p
    + - i_fa_whatsapp
    + - i_fa_server
    + - i_fa_user_plus
    + - i_fa_user_times
    + - i_fa_bed i_fa_hotel_fa_bed
    + - i_fa_viacoin
    + - i_fa_train
    + - i_fa_subway
    + - i_fa_medium
    + - i_fa_y_combinator i_fa_yc_fa_y_combinator
    + - i_fa_optin_monster
    + - i_fa_opencart
    + - i_fa_expeditedssl
    + - i_fa_battery_full i_fa_battery_fa_battery_full i_fa_battery_4_fa_battery_full
    + - i_fa_battery_three_quarters i_fa_battery_3_fa_battery_three_quarters
    + - i_fa_battery_half i_fa_battery_2_fa_battery_half
    + - i_fa_battery_quarter i_fa_battery_1_fa_battery_quarter
    + - i_fa_battery_empty i_fa_battery_0_fa_battery_empty
    + - i_fa_mouse_pointer
    + - i_fa_i_cursor
    + - i_fa_object_group
    + - i_fa_object_ungroup
    + - i_fa_sticky_note
    + - i_fa_sticky_note_o
    + - i_fa_cc_jcb
    + - i_fa_cc_diners_club
    + - i_fa_clone
    + - i_fa_balance_scale
    + - i_fa_hourglass_o
    + - i_fa_hourglass_start i_fa_hourglass_1_fa_hourglass_start
    + - i_fa_hourglass_half i_fa_hourglass_2_fa_hourglass_half
    + - i_fa_hourglass_end i_fa_hourglass_3_fa_hourglass_end
    + - i_fa_hourglass
    + - i_fa_hand_rock_o i_fa_hand_grab_o_fa_hand_rock_o
    + - i_fa_hand_paper_o i_fa_hand_stop_o_fa_hand_paper_o
    + - i_fa_hand_scissors_o
    + - i_fa_hand_lizard_o
    + - i_fa_hand_spock_o
    + - i_fa_hand_pointer_o
    + - i_fa_hand_peace_o
    + - i_fa_trademark
    + - i_fa_registered
    + - i_fa_creative_commons
    + - i_fa_gg
    + - i_fa_gg_circle
    + - i_fa_tripadvisor
    + - i_fa_odnoklassniki
    + - i_fa_odnoklassniki_square
    + - i_fa_get_pocket
    + - i_fa_wikipedia_w
    + - i_fa_safari
    + - i_fa_chrome
    + - i_fa_firefox
    + - i_fa_opera
    + - i_fa_internet_explorer
    + - i_fa_television i_fa_tv_fa_television
    + - i_fa_contao
    + - i_fa_500px
    + - i_fa_amazon
    + - i_fa_calendar_plus_o
    + - i_fa_calendar_minus_o
    + - i_fa_calendar_times_o
    + - i_fa_calendar_check_o
    + - i_fa_industry
    + - i_fa_map_pin
    + - i_fa_map_signs
    + - i_fa_map_o
    + - i_fa_map
    + - i_fa_commenting
    + - i_fa_commenting_o
    + - i_fa_houzz
    + - i_fa_vimeo
    + - i_fa_black_tie
    + - i_fa_fonticons
    + - i_fa_reddit_alien
    + - i_fa_edge
    + - i_fa_credit_card_alt
    + - i_fa_codiepie
    + - i_fa_modx
    + - i_fa_fort_awesome
    + - i_fa_usb
    + - i_fa_product_hunt
    + - i_fa_mixcloud
    + - i_fa_scribd
    + - i_fa_pause_circle
    + - i_fa_pause_circle_o
    + - i_fa_stop_circle
    + - i_fa_stop_circle_o
    + - i_fa_shopping_bag
    + - i_fa_shopping_basket
    + - i_fa_hashtag
    + - i_fa_bluetooth
    + - i_fa_bluetooth_b
    + - i_fa_percent
    + - i_fa_gitlab
    + - i_fa_wpbeginner
    + - i_fa_wpforms
    + - i_fa_envira
    + - i_fa_universal_access
    + - i_fa_wheelchair_alt
    + - i_fa_question_circle_o
    + - i_fa_blind
    + - i_fa_audio_description
    + - i_fa_volume_control_phone
    + - i_fa_braille
    + - i_fa_assistive_listening_systems
    + - i_fa_american_sign_language_interpreting i_fa_asl_interpreting_fa_american_sign_language_interpreting
    + - i_fa_deaf i_fa_deafness_fa_deaf i_fa_hard_of_hearing_fa_deaf
    + - i_fa_glide
    + - i_fa_glide_g
    + - i_fa_sign_language i_fa_signing_fa_sign_language
    + - i_fa_low_vision
    + - i_fa_viadeo
    + - i_fa_viadeo_square
    + - i_fa_snapchat
    + - i_fa_snapchat_ghost
    + - i_fa_snapchat_square
    + - i_fa_pied_piper
    + - i_fa_first_order
    + - i_fa_yoast
    + - i_fa_themeisle
    + - i_fa_google_plus_official i_fa_google_plus_circle_fa_google_plus_official
    + - i_fa_font_awesome i_fa_fa_fa_font_awesome
    + - i_fa_handshake_o
    + - i_fa_envelope_open
    + - i_fa_envelope_open_o
    + - i_fa_linode
    + - i_fa_address_book
    + - i_fa_address_book_o
    + - i_fa_address_card i_fa_vcard_fa_address_card
    + - i_fa_address_card_o i_fa_vcard_o_fa_address_card_o
    + - i_fa_user_circle
    + - i_fa_user_circle_o
    + - i_fa_user_o
    + - i_fa_id_badge
    + - i_fa_id_card i_fa_drivers_license_fa_id_card
    + - i_fa_id_card_o i_fa_drivers_license_o_fa_id_card_o
    + - i_fa_quora
    + - i_fa_free_code_camp
    + - i_fa_telegram
    + - i_fa_thermometer_full i_fa_thermometer_fa_thermometer_full i_fa_thermometer_4_fa_thermometer_full
    + - i_fa_thermometer_three_quarters i_fa_thermometer_3_fa_thermometer_three_quarters
    + - i_fa_thermometer_half i_fa_thermometer_2_fa_thermometer_half
    + - i_fa_thermometer_quarter i_fa_thermometer_1_fa_thermometer_quarter
    + - i_fa_thermometer_empty i_fa_thermometer_0_fa_thermometer_empty
    + - i_fa_shower
    + - i_fa_bath i_fa_bathtub_fa_bath i_fa_s15_fa_bath
    + - i_fa_podcast
    + - i_fa_window_maximize
    + - i_fa_window_minimize
    + - i_fa_window_restore
    + - i_fa_window_close i_fa_times_rectangle_fa_window_close
    + - i_fa_window_close_o i_fa_times_rectangle_o_fa_window_close_o
    + - i_fa_bandcamp
    + - i_fa_grav
    + - i_fa_etsy
    + - i_fa_imdb
    + - i_fa_ravelry
    + - i_fa_eercast
    + - i_fa_microchip
    + - i_fa_snowflake_o
    + - i_fa_superpowers
    + - i_fa_wpexplorer
    + - i_fa_meetup
    +⏻ - i_iec_power
    +⏼ - i_iec_toggle_power
    +⏽ - i_iec_power_on
    +⏾ - i_iec_sleep_mode
    +⭘ - i_iec_power_off
    + - i_linux_alpine
    + - i_linux_aosc
    + - i_linux_apple
    + - i_linux_archlinux
    + - i_linux_centos
    + - i_linux_coreos
    + - i_linux_debian
    + - i_linux_devuan
    + - i_linux_docker
    + - i_linux_elementary
    + - i_linux_fedora
    + - i_linux_fedora_inverse
    + - i_linux_freebsd
    + - i_linux_gentoo
    + - i_linux_linuxmint
    + - i_linux_linuxmint_inverse
    + - i_linux_mageia
    + - i_linux_mandriva
    + - i_linux_manjaro
    + - i_linux_nixos
    + - i_linux_opensuse
    + - i_linux_raspberry_pi
    + - i_linux_redhat
    + - i_linux_sabayon
    + - i_linux_slackware
    + - i_linux_slackware_inverse
    + - i_linux_tux
    + - i_linux_ubuntu
    + - i_linux_ubuntu_inverse
    + - i_mdi_vector_square
    + - i_mdi_access_point
    + - i_mdi_access_point_network
    + - i_mdi_account
    + - i_mdi_account_alert
    + - i_mdi_account_box
    + - i_mdi_account_box_outline
    + - i_mdi_account_check
    + - i_mdi_account_circle
    + - i_mdi_account_convert
    + - i_mdi_account_key
    + - i_mdi_account_location
    + - i_mdi_account_minus
    + - i_mdi_account_multiple
    + - i_mdi_account_multiple_outline
    + - i_mdi_account_multiple_plus
    + - i_mdi_account_network
    + - i_mdi_account_off
    + - i_mdi_account_outline
    + - i_mdi_account_plus
    + - i_mdi_account_remove
    + - i_mdi_account_search
    + - i_mdi_account_star
    + - i_mdi_orbit
    + - i_mdi_account_switch
    + - i_mdi_adjust
    + - i_mdi_air_conditioner
    + - i_mdi_airballoon
    + - i_mdi_airplane
    + - i_mdi_airplane_off
    + - i_mdi_airplay
    + - i_mdi_alarm
    + - i_mdi_alarm_check
    + - i_mdi_alarm_multiple
    + - i_mdi_alarm_off
    + - i_mdi_alarm_plus
    + - i_mdi_album
    + - i_mdi_alert
    + - i_mdi_alert_box
    + - i_mdi_alert_circle
    + - i_mdi_alert_octagon
    + - i_mdi_alert_outline
    + - i_mdi_alpha
    + - i_mdi_alphabetical
    + - i_mdi_amazon
    + - i_mdi_amazon_clouddrive
    + - i_mdi_ambulance
    + - i_mdi_amplifier
    + - i_mdi_anchor
    + - i_mdi_android
    + - i_mdi_android_debug_bridge
    + - i_mdi_android_studio
    + - i_mdi_apple
    + - i_mdi_apple_finder
    + - i_mdi_apple_ios
    + - i_mdi_apple_mobileme
    + - i_mdi_apple_safari
    + - i_mdi_font_awesome
    + - i_mdi_apps
    + - i_mdi_archive
    + - i_mdi_arrange_bring_forward
    + - i_mdi_arrange_bring_to_front
    + - i_mdi_arrange_send_backward
    + - i_mdi_arrange_send_to_back
    + - i_mdi_arrow_all
    + - i_mdi_arrow_bottom_left
    + - i_mdi_arrow_bottom_right
    + - i_mdi_arrow_collapse_all
    + - i_mdi_arrow_down
    + - i_mdi_arrow_down_thick
    + - i_mdi_arrow_down_bold_circle
    + - i_mdi_arrow_down_bold_circle_outline
    + - i_mdi_arrow_down_bold_hexagon_outline
    + - i_mdi_arrow_down_drop_circle
    + - i_mdi_arrow_down_drop_circle_outline
    + - i_mdi_arrow_expand_all
    + - i_mdi_arrow_left
    + - i_mdi_arrow_left_thick
    + - i_mdi_arrow_left_bold_circle
    + - i_mdi_arrow_left_bold_circle_outline
    + - i_mdi_arrow_left_bold_hexagon_outline
    + - i_mdi_arrow_left_drop_circle
    + - i_mdi_arrow_left_drop_circle_outline
    + - i_mdi_arrow_right
    + - i_mdi_arrow_right_thick
    + - i_mdi_arrow_right_bold_circle
    + - i_mdi_arrow_right_bold_circle_outline
    + - i_mdi_arrow_right_bold_hexagon_outline
    + - i_mdi_arrow_right_drop_circle
    + - i_mdi_arrow_right_drop_circle_outline
    + - i_mdi_arrow_top_left
    + - i_mdi_arrow_top_right
    + - i_mdi_arrow_up
    + - i_mdi_arrow_up_thick
    + - i_mdi_arrow_up_bold_circle
    + - i_mdi_arrow_up_bold_circle_outline
    + - i_mdi_arrow_up_bold_hexagon_outline
    + - i_mdi_arrow_up_drop_circle
    + - i_mdi_arrow_up_drop_circle_outline
    + - i_mdi_assistant
    + - i_mdi_at
    + - i_mdi_attachment
    + - i_mdi_audiobook
    + - i_mdi_auto_fix
    + - i_mdi_auto_upload
    + - i_mdi_autorenew
    + - i_mdi_av_timer
    + - i_mdi_baby
    + - i_mdi_backburger
    + - i_mdi_backspace
    + - i_mdi_backup_restore
    + - i_mdi_bank
    + - i_mdi_barcode
    + - i_mdi_barcode_scan
    + - i_mdi_barley
    + - i_mdi_barrel
    + - i_mdi_basecamp
    + - i_mdi_basket
    + - i_mdi_basket_fill
    + - i_mdi_basket_unfill
    + - i_mdi_battery
    + - i_mdi_battery_10
    + - i_mdi_battery_20
    + - i_mdi_battery_30
    + - i_mdi_battery_40
    + - i_mdi_battery_50
    + - i_mdi_battery_60
    + - i_mdi_battery_70
    + - i_mdi_battery_80
    + - i_mdi_battery_90
    + - i_mdi_battery_alert
    + - i_mdi_battery_charging
    + - i_mdi_battery_charging_100
    + - i_mdi_battery_charging_20
    + - i_mdi_battery_charging_30
    + - i_mdi_battery_charging_40
    + - i_mdi_battery_charging_60
    + - i_mdi_battery_charging_80
    + - i_mdi_battery_charging_90
    + - i_mdi_battery_minus
    + - i_mdi_battery_negative
    + - i_mdi_battery_outline
    + - i_mdi_battery_plus
    + - i_mdi_battery_positive
    + - i_mdi_battery_unknown
    + - i_mdi_beach
    + - i_mdi_flask
    + - i_mdi_flask_empty
    + - i_mdi_flask_empty_outline
    + - i_mdi_flask_outline
    + - i_mdi_beats
    + - i_mdi_beer
    + - i_mdi_behance
    + - i_mdi_bell
    + - i_mdi_bell_off
    + - i_mdi_bell_outline
    + - i_mdi_bell_plus
    + - i_mdi_bell_ring
    + - i_mdi_bell_ring_outline
    + - i_mdi_bell_sleep
    + - i_mdi_beta
    + - i_mdi_bible
    + - i_mdi_bike
    + - i_mdi_bing
    + - i_mdi_binoculars
    + - i_mdi_bio
    + - i_mdi_biohazard
    + - i_mdi_bitbucket
    + - i_mdi_black_mesa
    + - i_mdi_blackberry
    + - i_mdi_blender
    + - i_mdi_blinds
    + - i_mdi_block_helper
    + - i_mdi_blogger
    + - i_mdi_bluetooth
    + - i_mdi_bluetooth_audio
    + - i_mdi_bluetooth_connect
    + - i_mdi_bluetooth_off
    + - i_mdi_bluetooth_settings
    + - i_mdi_bluetooth_transfer
    + - i_mdi_blur
    + - i_mdi_blur_linear
    + - i_mdi_blur_off
    + - i_mdi_blur_radial
    + - i_mdi_bone
    + - i_mdi_book
    + - i_mdi_book_multiple
    + - i_mdi_book_multiple_variant
    + - i_mdi_book_open
    + - i_mdi_book_open_variant
    + - i_mdi_book_variant
    + - i_mdi_bookmark
    + - i_mdi_bookmark_check
    + - i_mdi_bookmark_music
    + - i_mdi_bookmark_outline
    + - i_mdi_bookmark_plus_outline
    + - i_mdi_bookmark_plus
    + - i_mdi_bookmark_remove
    + - i_mdi_border_all
    + - i_mdi_border_bottom
    + - i_mdi_border_color
    + - i_mdi_border_horizontal
    + - i_mdi_border_inside
    + - i_mdi_border_left
    + - i_mdi_border_none
    + - i_mdi_border_outside
    + - i_mdi_border_right
    + - i_mdi_border_style
    + - i_mdi_border_top
    + - i_mdi_border_vertical
    + - i_mdi_bowling
    + - i_mdi_box
    + - i_mdi_box_cutter
    + - i_mdi_briefcase
    + - i_mdi_briefcase_check
    + - i_mdi_briefcase_download
    + - i_mdi_briefcase_upload
    + - i_mdi_brightness_1
    + - i_mdi_brightness_2
    + - i_mdi_brightness_3
    + - i_mdi_brightness_4
    + - i_mdi_brightness_5
    + - i_mdi_brightness_6
    + - i_mdi_brightness_7
    + - i_mdi_brightness_auto
    + - i_mdi_broom
    + - i_mdi_brush
    + - i_mdi_bug
    + - i_mdi_bulletin_board
    + - i_mdi_bullhorn
    + - i_mdi_bus
    + - i_mdi_cached
    + - i_mdi_cake
    + - i_mdi_cake_layered
    + - i_mdi_cake_variant
    + - i_mdi_calculator
    + - i_mdi_calendar
    + - i_mdi_calendar_blank
    + - i_mdi_calendar_check
    + - i_mdi_calendar_clock
    + - i_mdi_calendar_multiple
    + - i_mdi_calendar_multiple_check
    + - i_mdi_calendar_plus
    + - i_mdi_calendar_remove
    + - i_mdi_calendar_text
    + - i_mdi_calendar_today
    + - i_mdi_call_made
    + - i_mdi_call_merge
    + - i_mdi_call_missed
    + - i_mdi_call_received
    + - i_mdi_call_split
    + - i_mdi_camcorder
    + - i_mdi_camcorder_box
    + - i_mdi_camcorder_box_off
    + - i_mdi_camcorder_off
    + - i_mdi_camera
    + - i_mdi_camera_enhance
    + - i_mdi_camera_front
    + - i_mdi_camera_front_variant
    + - i_mdi_camera_iris
    + - i_mdi_camera_party_mode
    + - i_mdi_camera_rear
    + - i_mdi_camera_rear_variant
    + - i_mdi_camera_switch
    + - i_mdi_camera_timer
    + - i_mdi_candycane
    + - i_mdi_car
    + - i_mdi_car_battery
    + - i_mdi_car_connected
    + - i_mdi_car_wash
    + - i_mdi_carrot
    + - i_mdi_cart
    + - i_mdi_cart_outline
    + - i_mdi_cart_plus
    + - i_mdi_case_sensitive_alt
    + - i_mdi_cash
    + - i_mdi_cash_100
    + - i_mdi_cash_multiple
    + - i_mdi_cash_usd
    + - i_mdi_cast
    + - i_mdi_cast_connected
    + - i_mdi_castle
    + - i_mdi_cat
    + - i_mdi_cellphone
    + - i_mdi_cellphone_android
    + - i_mdi_cellphone_basic
    + - i_mdi_cellphone_dock
    + - i_mdi_cellphone_iphone
    + - i_mdi_cellphone_link
    + - i_mdi_cellphone_link_off
    + - i_mdi_cellphone_settings
    + - i_mdi_certificate
    + - i_mdi_chair_school
    + - i_mdi_chart_arc
    + - i_mdi_chart_areaspline
    + - i_mdi_chart_bar
    + - i_mdi_chart_histogram
    + - i_mdi_chart_line
    + - i_mdi_chart_pie
    + - i_mdi_check
    + - i_mdi_check_all
    + - i_mdi_checkbox_blank
    + - i_mdi_checkbox_blank_circle
    + - i_mdi_checkbox_blank_circle_outline
    + - i_mdi_checkbox_blank_outline
    + - i_mdi_checkbox_marked
    + - i_mdi_checkbox_marked_circle
    + - i_mdi_checkbox_marked_circle_outline
    + - i_mdi_checkbox_marked_outline
    + - i_mdi_checkbox_multiple_blank
    + - i_mdi_checkbox_multiple_blank_outline
    + - i_mdi_checkbox_multiple_marked
    + - i_mdi_checkbox_multiple_marked_outline
    + - i_mdi_checkerboard
    + - i_mdi_chemical_weapon
    + - i_mdi_chevron_double_down
    + - i_mdi_chevron_double_left
    + - i_mdi_chevron_double_right
    + - i_mdi_chevron_double_up
    + - i_mdi_chevron_down
    + - i_mdi_chevron_left
    + - i_mdi_chevron_right
    + - i_mdi_chevron_up
    + - i_mdi_church
    + - i_mdi_cisco_webex
    + - i_mdi_city
    + - i_mdi_clipboard
    + - i_mdi_clipboard_account
    + - i_mdi_clipboard_alert
    + - i_mdi_clipboard_arrow_down
    + - i_mdi_clipboard_arrow_left
    + - i_mdi_clipboard_check
    + - i_mdi_clipboard_outline
    + - i_mdi_clipboard_text
    + - i_mdi_clippy
    + - i_mdi_clock
    + - i_mdi_clock_end
    + - i_mdi_clock_fast
    + - i_mdi_clock_in
    + - i_mdi_clock_out
    + - i_mdi_clock_start
    + - i_mdi_close
    + - i_mdi_close_box
    + - i_mdi_close_box_outline
    + - i_mdi_close_circle
    + - i_mdi_close_circle_outline
    + - i_mdi_close_network
    + - i_mdi_close_octagon
    + - i_mdi_close_octagon_outline
    + - i_mdi_closed_caption
    + - i_mdi_cloud
    + - i_mdi_cloud_check
    + - i_mdi_cloud_circle
    + - i_mdi_cloud_download
    + - i_mdi_cloud_outline
    + - i_mdi_cloud_off_outline
    + - i_mdi_cloud_print
    + - i_mdi_cloud_print_outline
    + - i_mdi_cloud_upload
    + - i_mdi_code_array
    + - i_mdi_code_braces
    + - i_mdi_code_brackets
    + - i_mdi_code_equal
    + - i_mdi_code_greater_than
    + - i_mdi_code_greater_than_or_equal
    + - i_mdi_code_less_than
    + - i_mdi_code_less_than_or_equal
    + - i_mdi_code_not_equal
    + - i_mdi_code_not_equal_variant
    + - i_mdi_code_parentheses
    + - i_mdi_code_string
    + - i_mdi_code_tags
    + - i_mdi_codepen
    + - i_mdi_coffee
    + - i_mdi_coffee_to_go
    + - i_mdi_coin
    + - i_mdi_color_helper
    + - i_mdi_comment
    + - i_mdi_comment_account
    + - i_mdi_comment_account_outline
    + - i_mdi_comment_alert
    + - i_mdi_comment_alert_outline
    + - i_mdi_comment_check
    + - i_mdi_comment_check_outline
    + - i_mdi_comment_multiple_outline
    + - i_mdi_comment_outline
    + - i_mdi_comment_plus_outline
    + - i_mdi_comment_processing
    + - i_mdi_comment_processing_outline
    + - i_mdi_comment_question_outline
    + - i_mdi_comment_remove_outline
    + - i_mdi_comment_text
    + - i_mdi_comment_text_outline
    + - i_mdi_compare
    + - i_mdi_compass
    + - i_mdi_compass_outline
    + - i_mdi_console
    + - i_mdi_contact_mail
    + - i_mdi_content_copy
    + - i_mdi_content_cut
    + - i_mdi_content_duplicate
    + - i_mdi_content_paste
    + - i_mdi_content_save
    + - i_mdi_content_save_all
    + - i_mdi_contrast
    + - i_mdi_contrast_box
    + - i_mdi_contrast_circle
    + - i_mdi_cookie
    + - i_mdi_counter
    + - i_mdi_cow
    + - i_mdi_credit_card
    + - i_mdi_credit_card_multiple
    + - i_mdi_credit_card_scan
    + - i_mdi_crop
    + - i_mdi_crop_free
    + - i_mdi_crop_landscape
    + - i_mdi_crop_portrait
    + - i_mdi_crop_square
    + - i_mdi_crosshairs
    + - i_mdi_crosshairs_gps
    + - i_mdi_crown
    + - i_mdi_cube
    + - i_mdi_cube_outline
    + - i_mdi_cube_send
    + - i_mdi_cube_unfolded
    + - i_mdi_cup
    + - i_mdi_cup_water
    + - i_mdi_currency_btc
    + - i_mdi_currency_eur
    + - i_mdi_currency_gbp
    + - i_mdi_currency_inr
    + - i_mdi_currency_ngn
    + - i_mdi_currency_rub
    + - i_mdi_currency_try
    + - i_mdi_currency_usd
    + - i_mdi_cursor_default
    + - i_mdi_cursor_default_outline
    + - i_mdi_cursor_move
    + - i_mdi_cursor_pointer
    + - i_mdi_database
    + - i_mdi_database_minus
    + - i_mdi_database_plus
    + - i_mdi_debug_step_into
    + - i_mdi_debug_step_out
    + - i_mdi_debug_step_over
    + - i_mdi_decimal_decrease
    + - i_mdi_decimal_increase
    + - i_mdi_delete
    + - i_mdi_delete_variant
    + - i_mdi_delta
    + - i_mdi_deskphone
    + - i_mdi_desktop_mac
    + - i_mdi_desktop_tower
    + - i_mdi_details
    + - i_mdi_deviantart
    + - i_mdi_diamond
    + - i_mdi_creation
    + - i_mdi_dice_1
    + - i_mdi_dice_2
    + - i_mdi_dice_3
    + - i_mdi_dice_4
    + - i_mdi_dice_5
    + - i_mdi_dice_6
    + - i_mdi_directions
    + - i_mdi_disk_alert
    + - i_mdi_disqus
    + - i_mdi_disqus_outline
    + - i_mdi_division
    + - i_mdi_division_box
    + - i_mdi_dns
    + - i_mdi_domain
    + - i_mdi_dots_horizontal
    + - i_mdi_dots_vertical
    + - i_mdi_download
    + - i_mdi_drag
    + - i_mdi_drag_horizontal
    + - i_mdi_drag_vertical
    + - i_mdi_drawing
    + - i_mdi_drawing_box
    + - i_mdi_dribbble
    + - i_mdi_dribbble_box
    + - i_mdi_drone
    + - i_mdi_dropbox
    + - i_mdi_drupal
    + - i_mdi_duck
    + - i_mdi_dumbbell
    + - i_mdi_earth
    + - i_mdi_earth_off
    + - i_mdi_edge
    + - i_mdi_eject
    + - i_mdi_elevation_decline
    + - i_mdi_elevation_rise
    + - i_mdi_elevator
    + - i_mdi_email
    + - i_mdi_email_open
    + - i_mdi_email_outline
    + - i_mdi_email_secure
    + - i_mdi_emoticon
    + - i_mdi_emoticon_cool
    + - i_mdi_emoticon_devil
    + - i_mdi_emoticon_happy
    + - i_mdi_emoticon_neutral
    + - i_mdi_emoticon_poop
    + - i_mdi_emoticon_sad
    + - i_mdi_emoticon_tongue
    + - i_mdi_engine
    + - i_mdi_engine_outline
    + - i_mdi_equal
    + - i_mdi_equal_box
    + - i_mdi_eraser
    + - i_mdi_escalator
    + - i_mdi_ethernet
    + - i_mdi_ethernet_cable
    + - i_mdi_ethernet_cable_off
    + - i_mdi_etsy
    + - i_mdi_evernote
    + - i_mdi_exclamation
    + - i_mdi_exit_to_app
    + - i_mdi_export
    + - i_mdi_eye
    + - i_mdi_eye_off
    + - i_mdi_eyedropper
    + - i_mdi_eyedropper_variant
    + - i_mdi_facebook
    + - i_mdi_facebook_box
    + - i_mdi_facebook_messenger
    + - i_mdi_factory
    + - i_mdi_fan
    + - i_mdi_fast_forward
    + - i_mdi_fax
    + - i_mdi_ferry
    + - i_mdi_file
    + - i_mdi_file_chart
    + - i_mdi_file_check
    + - i_mdi_file_cloud
    + - i_mdi_file_delimited
    + - i_mdi_file_document
    + - i_mdi_file_document_box
    + - i_mdi_file_excel
    + - i_mdi_file_excel_box
    + - i_mdi_file_export
    + - i_mdi_file_find
    + - i_mdi_file_image
    + - i_mdi_file_import
    + - i_mdi_file_lock
    + - i_mdi_file_multiple
    + - i_mdi_file_music
    + - i_mdi_file_outline
    + - i_mdi_file_pdf
    + - i_mdi_file_pdf_box
    + - i_mdi_file_powerpoint
    + - i_mdi_file_powerpoint_box
    + - i_mdi_file_presentation_box
    + - i_mdi_file_send
    + - i_mdi_file_video
    + - i_mdi_file_word
    + - i_mdi_file_word_box
    + - i_mdi_file_xml
    + - i_mdi_film
    + - i_mdi_filmstrip
    + - i_mdi_filmstrip_off
    + - i_mdi_filter
    + - i_mdi_filter_outline
    + - i_mdi_filter_remove
    + - i_mdi_filter_remove_outline
    + - i_mdi_filter_variant
    + - i_mdi_fingerprint
    + - i_mdi_fire
    + - i_mdi_firefox
    + - i_mdi_fish
    + - i_mdi_flag
    + - i_mdi_flag_checkered
    + - i_mdi_flag_outline
    + - i_mdi_flag_variant_outline
    + - i_mdi_flag_triangle
    + - i_mdi_flag_variant
    + - i_mdi_flash
    + - i_mdi_flash_auto
    + - i_mdi_flash_off
    + - i_mdi_flashlight
    + - i_mdi_flashlight_off
    + - i_mdi_flattr
    + - i_mdi_flip_to_back
    + - i_mdi_flip_to_front
    + - i_mdi_floppy
    + - i_mdi_flower
    + - i_mdi_folder
    + - i_mdi_folder_account
    + - i_mdi_folder_download
    + - i_mdi_folder_google_drive
    + - i_mdi_folder_image
    + - i_mdi_folder_lock
    + - i_mdi_folder_lock_open
    + - i_mdi_folder_move
    + - i_mdi_folder_multiple
    + - i_mdi_folder_multiple_image
    + - i_mdi_folder_multiple_outline
    + - i_mdi_folder_outline
    + - i_mdi_folder_plus
    + - i_mdi_folder_remove
    + - i_mdi_folder_upload
    + - i_mdi_food
    + - i_mdi_food_apple
    + - i_mdi_food_variant
    + - i_mdi_football
    + - i_mdi_football_australian
    + - i_mdi_football_helmet
    + - i_mdi_format_align_center
    + - i_mdi_format_align_justify
    + - i_mdi_format_align_left
    + - i_mdi_format_align_right
    + - i_mdi_format_bold
    + - i_mdi_format_clear
    + - i_mdi_format_color_fill
    + - i_mdi_format_float_center
    + - i_mdi_format_float_left
    + - i_mdi_format_float_none
    + - i_mdi_format_float_right
    + - i_mdi_format_header_1
    + - i_mdi_format_header_2
    + - i_mdi_format_header_3
    + - i_mdi_format_header_4
    + - i_mdi_format_header_5
    + - i_mdi_format_header_6
    + - i_mdi_format_header_decrease
    + - i_mdi_format_header_equal
    + - i_mdi_format_header_increase
    + - i_mdi_format_header_pound
    + - i_mdi_format_indent_decrease
    + - i_mdi_format_indent_increase
    + - i_mdi_format_italic
    + - i_mdi_format_line_spacing
    + - i_mdi_format_list_bulleted
    + - i_mdi_format_list_bulleted_type
    + - i_mdi_format_list_numbers
    + - i_mdi_format_paint
    + - i_mdi_format_paragraph
    + - i_mdi_format_quote_close
    + - i_mdi_format_size
    + - i_mdi_format_strikethrough
    + - i_mdi_format_strikethrough_variant
    + - i_mdi_format_subscript
    + - i_mdi_format_superscript
    + - i_mdi_format_text
    + - i_mdi_format_textdirection_l_to_r
    + - i_mdi_format_textdirection_r_to_l
    + - i_mdi_format_underline
    + - i_mdi_format_wrap_inline
    + - i_mdi_format_wrap_square
    + - i_mdi_format_wrap_tight
    + - i_mdi_format_wrap_top_bottom
    + - i_mdi_forum
    + - i_mdi_forward
    + - i_mdi_foursquare
    + - i_mdi_fridge
    + - i_mdi_fridge_filled
    + - i_mdi_fridge_filled_bottom
    + - i_mdi_fridge_filled_top
    + - i_mdi_fullscreen
    + - i_mdi_fullscreen_exit
    + - i_mdi_function
    + - i_mdi_gamepad
    + - i_mdi_gamepad_variant
    + - i_mdi_gas_station
    + - i_mdi_gate
    + - i_mdi_gauge
    + - i_mdi_gavel
    + - i_mdi_gender_female
    + - i_mdi_gender_male
    + - i_mdi_gender_male_female
    + - i_mdi_gender_transgender
    + - i_mdi_ghost
    + - i_mdi_gift
    + - i_mdi_git
    + - i_mdi_github_box
    + - i_mdi_github_circle
    + - i_mdi_glass_flute
    + - i_mdi_glass_mug
    + - i_mdi_glass_stange
    + - i_mdi_glass_tulip
    + - i_mdi_glassdoor
    + - i_mdi_glasses
    + - i_mdi_gmail
    + - i_mdi_gnome
    + - i_mdi_google
    + - i_mdi_google_cardboard
    + - i_mdi_google_chrome
    + - i_mdi_google_circles
    + - i_mdi_google_circles_communities
    + - i_mdi_google_circles_extended
    + - i_mdi_google_circles_group
    + - i_mdi_google_controller
    + - i_mdi_google_controller_off
    + - i_mdi_google_drive
    + - i_mdi_google_earth
    + - i_mdi_google_glass
    + - i_mdi_google_nearby
    + - i_mdi_google_pages
    + - i_mdi_google_physical_web
    + - i_mdi_google_play
    + - i_mdi_google_plus
    + - i_mdi_google_plus_box
    + - i_mdi_google_translate
    + - i_mdi_google_wallet
    + - i_mdi_grid
    + - i_mdi_grid_off
    + - i_mdi_group
    + - i_mdi_guitar_electric
    + - i_mdi_guitar_pick
    + - i_mdi_guitar_pick_outline
    + - i_mdi_hand_pointing_right
    + - i_mdi_hanger
    + - i_mdi_hangouts
    + - i_mdi_harddisk
    + - i_mdi_headphones
    + - i_mdi_headphones_box
    + - i_mdi_headphones_settings
    + - i_mdi_headset
    + - i_mdi_headset_dock
    + - i_mdi_headset_off
    + - i_mdi_heart
    + - i_mdi_heart_box
    + - i_mdi_heart_box_outline
    + - i_mdi_heart_broken
    + - i_mdi_heart_outline
    + - i_mdi_help
    + - i_mdi_help_circle
    + - i_mdi_hexagon
    + - i_mdi_hexagon_outline
    + - i_mdi_history
    + - i_mdi_hololens
    + - i_mdi_home
    + - i_mdi_home_modern
    + - i_mdi_home_variant
    + - i_mdi_hops
    + - i_mdi_hospital
    + - i_mdi_hospital_building
    + - i_mdi_hospital_marker
    + - i_mdi_hotel
    + - i_mdi_houzz
    + - i_mdi_houzz_box
    + - i_mdi_human
    + - i_mdi_human_child
    + - i_mdi_human_male_female
    + - i_mdi_image
    + - i_mdi_image_album
    + - i_mdi_image_area
    + - i_mdi_image_area_close
    + - i_mdi_image_broken
    + - i_mdi_image_broken_variant
    + - i_mdi_image_filter
    + - i_mdi_image_filter_black_white
    + - i_mdi_image_filter_center_focus
    + - i_mdi_image_filter_center_focus_weak
    + - i_mdi_image_filter_drama
    + - i_mdi_image_filter_frames
    + - i_mdi_image_filter_hdr
    + - i_mdi_image_filter_none
    + - i_mdi_image_filter_tilt_shift
    + - i_mdi_image_filter_vintage
    + - i_mdi_image_multiple
    + - i_mdi_import
    + - i_mdi_inbox_arrow_down
    + - i_mdi_information
    + - i_mdi_information_outline
    + - i_mdi_instagram
    + - i_mdi_instapaper
    + - i_mdi_internet_explorer
    + - i_mdi_invert_colors
    + - i_mdi_jeepney
    + - i_mdi_jira
    + - i_mdi_jsfiddle
    + - i_mdi_keg
    + - i_mdi_key
    + - i_mdi_key_change
    + - i_mdi_key_minus
    + - i_mdi_key_plus
    + - i_mdi_key_remove
    + - i_mdi_key_variant
    + - i_mdi_keyboard
    + - i_mdi_keyboard_backspace
    + - i_mdi_keyboard_caps
    + - i_mdi_keyboard_close
    + - i_mdi_keyboard_off
    + - i_mdi_keyboard_return
    + - i_mdi_keyboard_tab
    + - i_mdi_keyboard_variant
    + - i_mdi_kodi
    + - i_mdi_label
    + - i_mdi_label_outline
    + - i_mdi_lan
    + - i_mdi_lan_connect
    + - i_mdi_lan_disconnect
    + - i_mdi_lan_pending
    + - i_mdi_language_csharp
    + - i_mdi_language_css3
    + - i_mdi_language_html5
    + - i_mdi_language_javascript
    + - i_mdi_language_php
    + - i_mdi_language_python
    + - i_mdi_language_python_text
    + - i_mdi_laptop
    + - i_mdi_laptop_chromebook
    + - i_mdi_laptop_mac
    + - i_mdi_laptop_windows
    + - i_mdi_lastfm
    + - i_mdi_launch
    + - i_mdi_layers
    + - i_mdi_layers_off
    + - i_mdi_leaf
    + - i_mdi_led_off
    + - i_mdi_led_on
    + - i_mdi_led_outline
    + - i_mdi_led_variant_off
    + - i_mdi_led_variant_on
    + - i_mdi_led_variant_outline
    + - i_mdi_library
    + - i_mdi_library_books
    + - i_mdi_library_music
    + - i_mdi_library_plus
    + - i_mdi_lightbulb
    + - i_mdi_lightbulb_outline
    + - i_mdi_link
    + - i_mdi_link_off
    + - i_mdi_link_variant
    + - i_mdi_link_variant_off
    + - i_mdi_linkedin
    + - i_mdi_linkedin_box
    + - i_mdi_linux
    + - i_mdi_lock
    + - i_mdi_lock_open
    + - i_mdi_lock_open_outline
    + - i_mdi_lock_outline
    + - i_mdi_login
    + - i_mdi_logout
    + - i_mdi_looks
    + - i_mdi_loupe
    + - i_mdi_lumx
    + - i_mdi_magnet
    + - i_mdi_magnet_on
    + - i_mdi_magnify
    + - i_mdi_magnify_minus
    + - i_mdi_magnify_plus
    + - i_mdi_mail_ru
    + - i_mdi_map
    + - i_mdi_map_marker
    + - i_mdi_map_marker_circle
    + - i_mdi_map_marker_multiple
    + - i_mdi_map_marker_off
    + - i_mdi_map_marker_radius
    + - i_mdi_margin
    + - i_mdi_markdown
    + - i_mdi_marker_check
    + - i_mdi_martini
    + - i_mdi_material_ui
    + - i_mdi_math_compass
    + - i_mdi_maxcdn
    + - i_mdi_medium
    + - i_mdi_memory
    + - i_mdi_menu
    + - i_mdi_menu_down
    + - i_mdi_menu_left
    + - i_mdi_menu_right
    + - i_mdi_menu_up
    + - i_mdi_message
    + - i_mdi_message_alert
    + - i_mdi_message_draw
    + - i_mdi_message_image
    + - i_mdi_message_outline
    + - i_mdi_message_processing
    + - i_mdi_message_reply
    + - i_mdi_message_reply_text
    + - i_mdi_message_text
    + - i_mdi_message_text_outline
    + - i_mdi_message_video
    + - i_mdi_microphone
    + - i_mdi_microphone_off
    + - i_mdi_microphone_outline
    + - i_mdi_microphone_settings
    + - i_mdi_microphone_variant
    + - i_mdi_microphone_variant_off
    + - i_mdi_microsoft
    + - i_mdi_minecraft
    + - i_mdi_minus
    + - i_mdi_minus_box
    + - i_mdi_minus_circle
    + - i_mdi_minus_circle_outline
    + - i_mdi_minus_network
    + - i_mdi_monitor
    + - i_mdi_monitor_multiple
    + - i_mdi_more
    + - i_mdi_motorbike
    + - i_mdi_mouse
    + - i_mdi_mouse_off
    + - i_mdi_mouse_variant
    + - i_mdi_mouse_variant_off
    + - i_mdi_movie
    + - i_mdi_multiplication
    + - i_mdi_multiplication_box
    + - i_mdi_music_box
    + - i_mdi_music_box_outline
    + - i_mdi_music_circle
    + - i_mdi_music_note
    + - i_mdi_music_note_eighth
    + - i_mdi_music_note_half
    + - i_mdi_music_note_off
    + - i_mdi_music_note_quarter
    + - i_mdi_music_note_sixteenth
    + - i_mdi_music_note_whole
    + - i_mdi_nature
    + - i_mdi_nature_people
    + - i_mdi_navigation
    + - i_mdi_needle
    + - i_mdi_nest_protect
    + - i_mdi_nest_thermostat
    + - i_mdi_new_box
    + - i_mdi_newspaper
    + - i_mdi_nfc
    + - i_mdi_nfc_tap
    + - i_mdi_nfc_variant
    + - i_mdi_nodejs
    + - i_mdi_note
    + - i_mdi_note_outline
    + - i_mdi_note_plus
    + - i_mdi_note_plus_outline
    + - i_mdi_note_text
    + - i_mdi_notification_clear_all
    + - i_mdi_numeric
    + - i_mdi_numeric_0_box
    + - i_mdi_numeric_0_box_multiple_outline
    + - i_mdi_numeric_0_box_outline
    + - i_mdi_numeric_1_box
    + - i_mdi_numeric_1_box_multiple_outline
    + - i_mdi_numeric_1_box_outline
    + - i_mdi_numeric_2_box
    + - i_mdi_numeric_2_box_multiple_outline
    + - i_mdi_numeric_2_box_outline
    + - i_mdi_numeric_3_box
    + - i_mdi_numeric_3_box_multiple_outline
    + - i_mdi_numeric_3_box_outline
    + - i_mdi_numeric_4_box
    + - i_mdi_numeric_4_box_multiple_outline
    + - i_mdi_numeric_4_box_outline
    + - i_mdi_numeric_5_box
    + - i_mdi_numeric_5_box_multiple_outline
    + - i_mdi_numeric_5_box_outline
    + - i_mdi_numeric_6_box
    + - i_mdi_numeric_6_box_multiple_outline
    + - i_mdi_numeric_6_box_outline
    + - i_mdi_numeric_7_box
    + - i_mdi_numeric_7_box_multiple_outline
    + - i_mdi_numeric_7_box_outline
    + - i_mdi_numeric_8_box
    + - i_mdi_numeric_8_box_multiple_outline
    + - i_mdi_numeric_8_box_outline
    + - i_mdi_numeric_9_box
    + - i_mdi_numeric_9_box_multiple_outline
    + - i_mdi_numeric_9_box_outline
    + - i_mdi_numeric_9_plus_box
    + - i_mdi_numeric_9_plus_box_multiple_outline
    + - i_mdi_numeric_9_plus_box_outline
    + - i_mdi_nutrition
    + - i_mdi_octagon
    + - i_mdi_octagon_outline
    + - i_mdi_odnoklassniki
    + - i_mdi_office
    + - i_mdi_oil
    + - i_mdi_oil_temperature
    + - i_mdi_omega
    + - i_mdi_onedrive
    + - i_mdi_open_in_app
    + - i_mdi_open_in_new
    + - i_mdi_openid
    + - i_mdi_opera
    + - i_mdi_ornament
    + - i_mdi_ornament_variant
    + - i_mdi_inbox_arrow_up
    + - i_mdi_owl
    + - i_mdi_package
    + - i_mdi_package_down
    + - i_mdi_package_up
    + - i_mdi_package_variant
    + - i_mdi_package_variant_closed
    + - i_mdi_palette
    + - i_mdi_palette_advanced
    + - i_mdi_panda
    + - i_mdi_pandora
    + - i_mdi_panorama
    + - i_mdi_panorama_fisheye
    + - i_mdi_panorama_horizontal
    + - i_mdi_panorama_vertical
    + - i_mdi_panorama_wide_angle
    + - i_mdi_paper_cut_vertical
    + - i_mdi_paperclip
    + - i_mdi_parking
    + - i_mdi_pause
    + - i_mdi_pause_circle
    + - i_mdi_pause_circle_outline
    + - i_mdi_pause_octagon
    + - i_mdi_pause_octagon_outline
    + - i_mdi_paw
    + - i_mdi_pen
    + - i_mdi_pencil
    + - i_mdi_pencil_box
    + - i_mdi_pencil_box_outline
    + - i_mdi_pencil_lock
    + - i_mdi_pencil_off
    + - i_mdi_percent
    + - i_mdi_pharmacy
    + - i_mdi_phone
    + - i_mdi_phone_bluetooth
    + - i_mdi_phone_forward
    + - i_mdi_phone_hangup
    + - i_mdi_phone_in_talk
    + - i_mdi_phone_incoming
    + - i_mdi_phone_locked
    + - i_mdi_phone_log
    + - i_mdi_phone_missed
    + - i_mdi_phone_outgoing
    + - i_mdi_phone_paused
    + - i_mdi_phone_settings
    + - i_mdi_phone_voip
    + - i_mdi_pi
    + - i_mdi_pi_box
    +豈 - i_mdi_pig
    +更 - i_mdi_pill
    +車 - i_mdi_pin
    +賈 - i_mdi_pin_off
    +滑 - i_mdi_pine_tree
    +串 - i_mdi_pine_tree_box
    +句 - i_mdi_pinterest
    +龜 - i_mdi_pinterest_box
    +龜 - i_mdi_pizza
    +契 - i_mdi_play
    +金 - i_mdi_play_box_outline
    +喇 - i_mdi_play_circle
    +奈 - i_mdi_play_circle_outline
    +懶 - i_mdi_play_pause
    +癩 - i_mdi_play_protected_content
    +羅 - i_mdi_playlist_minus
    +蘿 - i_mdi_playlist_play
    +螺 - i_mdi_playlist_plus
    +裸 - i_mdi_playlist_remove
    +邏 - i_mdi_playstation
    +樂 - i_mdi_plus
    +洛 - i_mdi_plus_box
    +烙 - i_mdi_plus_circle
    +珞 - i_mdi_plus_circle_multiple_outline
    +落 - i_mdi_plus_circle_outline
    +酪 - i_mdi_plus_network
    +駱 - i_mdi_plus_one
    +亂 - i_mdi_pocket
    +卵 - i_mdi_pokeball
    +欄 - i_mdi_polaroid
    +爛 - i_mdi_poll
    +蘭 - i_mdi_poll_box
    +鸞 - i_mdi_polymer
    +嵐 - i_mdi_popcorn
    +濫 - i_mdi_pound
    +藍 - i_mdi_pound_box
    +襤 - i_mdi_power
    +拉 - i_mdi_power_settings
    +臘 - i_mdi_power_socket
    +蠟 - i_mdi_presentation
    +廊 - i_mdi_presentation_play
    +朗 - i_mdi_printer
    +浪 - i_mdi_printer_3d
    +狼 - i_mdi_printer_alert
    +郎 - i_mdi_professional_hexagon
    +來 - i_mdi_projector
    +冷 - i_mdi_projector_screen
    +勞 - i_mdi_pulse
    +擄 - i_mdi_puzzle
    +櫓 - i_mdi_qrcode
    +爐 - i_mdi_qrcode_scan
    +盧 - i_mdi_quadcopter
    +老 - i_mdi_quality_high
    +蘆 - i_mdi_quicktime
    +虜 - i_mdi_radar
    +路 - i_mdi_radiator
    +露 - i_mdi_radio
    +魯 - i_mdi_radio_handheld
    +鷺 - i_mdi_radio_tower
    +碌 - i_mdi_radioactive
    +祿 - i_mdi_radiobox_blank
    +綠 - i_mdi_radiobox_marked
    +菉 - i_mdi_raspberrypi
    +錄 - i_mdi_ray_end
    +鹿 - i_mdi_ray_end_arrow
    +論 - i_mdi_ray_start
    +壟 - i_mdi_ray_start_arrow
    +弄 - i_mdi_ray_start_end
    +籠 - i_mdi_ray_vertex
    +聾 - i_mdi_lastpass
    +牢 - i_mdi_read
    +磊 - i_mdi_youtube_tv
    +賂 - i_mdi_receipt
    +雷 - i_mdi_record
    +壘 - i_mdi_record_rec
    +屢 - i_mdi_recycle
    +樓 - i_mdi_reddit
    +淚 - i_mdi_redo
    +漏 - i_mdi_redo_variant
    +累 - i_mdi_refresh
    +縷 - i_mdi_regex
    +陋 - i_mdi_relative_scale
    +勒 - i_mdi_reload
    +肋 - i_mdi_remote
    +凜 - i_mdi_rename_box
    +凌 - i_mdi_repeat
    +稜 - i_mdi_repeat_off
    +綾 - i_mdi_repeat_once
    +菱 - i_mdi_replay
    +陵 - i_mdi_reply
    +讀 - i_mdi_reply_all
    +拏 - i_mdi_reproduction
    +樂 - i_mdi_resize_bottom_right
    +諾 - i_mdi_responsive
    +丹 - i_mdi_rewind
    +寧 - i_mdi_ribbon
    +怒 - i_mdi_road
    +率 - i_mdi_road_variant
    +異 - i_mdi_rocket
    +北 - i_mdi_rotate_3d
    +磻 - i_mdi_rotate_left
    +便 - i_mdi_rotate_left_variant
    +復 - i_mdi_rotate_right
    +不 - i_mdi_rotate_right_variant
    +泌 - i_mdi_router_wireless
    +數 - i_mdi_routes
    +索 - i_mdi_rss
    +參 - i_mdi_rss_box
    +塞 - i_mdi_ruler
    +省 - i_mdi_run_fast
    +葉 - i_mdi_sale
    +說 - i_mdi_satellite
    +殺 - i_mdi_satellite_variant
    +辰 - i_mdi_scale
    +沈 - i_mdi_scale_bathroom
    +拾 - i_mdi_school
    +若 - i_mdi_screen_rotation
    +掠 - i_mdi_screen_rotation_lock
    +略 - i_mdi_screwdriver
    +亮 - i_mdi_script
    +兩 - i_mdi_sd
    +凉 - i_mdi_seal
    +梁 - i_mdi_seat_flat
    +糧 - i_mdi_seat_flat_angled
    +良 - i_mdi_seat_individual_suite
    +諒 - i_mdi_seat_legroom_extra
    +量 - i_mdi_seat_legroom_normal
    +勵 - i_mdi_seat_legroom_reduced
    +呂 - i_mdi_seat_recline_extra
    +女 - i_mdi_seat_recline_normal
    +廬 - i_mdi_security
    +旅 - i_mdi_security_network
    +濾 - i_mdi_select
    +礪 - i_mdi_select_all
    +閭 - i_mdi_select_inverse
    +驪 - i_mdi_select_off
    +麗 - i_mdi_selection
    +黎 - i_mdi_send
    +力 - i_mdi_server
    +曆 - i_mdi_server_minus
    +歷 - i_mdi_server_network
    +轢 - i_mdi_server_network_off
    +年 - i_mdi_server_off
    +憐 - i_mdi_server_plus
    +戀 - i_mdi_server_remove
    +撚 - i_mdi_server_security
    +漣 - i_mdi_settings
    +煉 - i_mdi_settings_box
    +璉 - i_mdi_shape_plus
    +秊 - i_mdi_share
    +練 - i_mdi_share_variant
    +聯 - i_mdi_shield
    +輦 - i_mdi_shield_outline
    +蓮 - i_mdi_shopping
    +連 - i_mdi_shopping_music
    +鍊 - i_mdi_shredder
    +列 - i_mdi_shuffle
    +劣 - i_mdi_shuffle_disabled
    +咽 - i_mdi_shuffle_variant
    +烈 - i_mdi_sigma
    +裂 - i_mdi_sign_caution
    +說 - i_mdi_signal
    +廉 - i_mdi_silverware
    +念 - i_mdi_silverware_fork
    +捻 - i_mdi_silverware_spoon
    +殮 - i_mdi_silverware_variant
    +簾 - i_mdi_sim
    +獵 - i_mdi_sim_alert
    +令 - i_mdi_sim_off
    +囹 - i_mdi_sitemap
    +寧 - i_mdi_skip_backward
    +嶺 - i_mdi_skip_forward
    +怜 - i_mdi_skip_next
    +玲 - i_mdi_skip_previous
    +瑩 - i_mdi_skype
    +羚 - i_mdi_skype_business
    +聆 - i_mdi_slack
    +鈴 - i_mdi_sleep
    +零 - i_mdi_sleep_off
    +靈 - i_mdi_smoking
    +領 - i_mdi_smoking_off
    +例 - i_mdi_snapchat
    +禮 - i_mdi_snowman
    +醴 - i_mdi_soccer
    +隸 - i_mdi_sofa
    +惡 - i_mdi_sort
    +了 - i_mdi_sort_alphabetical
    +僚 - i_mdi_sort_ascending
    +寮 - i_mdi_sort_descending
    +尿 - i_mdi_sort_numeric
    +料 - i_mdi_sort_variant
    +樂 - i_mdi_soundcloud
    +燎 - i_mdi_source_fork
    +療 - i_mdi_source_pull
    +蓼 - i_mdi_speaker
    +遼 - i_mdi_speaker_off
    +龍 - i_mdi_speedometer
    +暈 - i_mdi_spellcheck
    +阮 - i_mdi_spotify
    +劉 - i_mdi_spotlight
    +杻 - i_mdi_spotlight_beam
    +柳 - i_mdi_square_inc
    +流 - i_mdi_square_inc_cash
    +溜 - i_mdi_stack_overflow
    +琉 - i_mdi_stairs
    +留 - i_mdi_star
    +硫 - i_mdi_star_circle
    +紐 - i_mdi_star_half
    +類 - i_mdi_star_off
    +六 - i_mdi_star_outline
    +戮 - i_mdi_steam
    +陸 - i_mdi_steering
    +倫 - i_mdi_step_backward
    +崙 - i_mdi_step_backward_2
    +淪 - i_mdi_step_forward
    +輪 - i_mdi_step_forward_2
    +律 - i_mdi_stethoscope
    +慄 - i_mdi_stocking
    +栗 - i_mdi_stop
    +率 - i_mdi_store
    +隆 - i_mdi_store_24_hour
    +利 - i_mdi_stove
    +吏 - i_mdi_subway_variant
    +履 - i_mdi_sunglasses
    +易 - i_mdi_swap_horizontal
    +李 - i_mdi_swap_vertical
    +梨 - i_mdi_swim
    +泥 - i_mdi_switch
    +理 - i_mdi_sword
    +痢 - i_mdi_sync
    +罹 - i_mdi_sync_alert
    +裏 - i_mdi_sync_off
    +裡 - i_mdi_tab
    +里 - i_mdi_tab_unselected
    +離 - i_mdi_table
    +匿 - i_mdi_table_column_plus_after
    +溺 - i_mdi_table_column_plus_before
    +吝 - i_mdi_table_column_remove
    +燐 - i_mdi_table_column_width
    +璘 - i_mdi_table_edit
    +藺 - i_mdi_table_large
    +隣 - i_mdi_table_row_height
    +鱗 - i_mdi_table_row_plus_after
    +麟 - i_mdi_table_row_plus_before
    +林 - i_mdi_table_row_remove
    +淋 - i_mdi_tablet
    +臨 - i_mdi_tablet_android
    +立 - i_mdi_tablet_ipad
    +笠 - i_mdi_tag
    +粒 - i_mdi_tag_faces
    +狀 - i_mdi_tag_multiple
    +炙 - i_mdi_tag_outline
    +識 - i_mdi_tag_text_outline
    +什 - i_mdi_target
    +茶 - i_mdi_taxi
    +刺 - i_mdi_teamviewer
    +切 - i_mdi_telegram
    +度 - i_mdi_television
    +拓 - i_mdi_television_guide
    +糖 - i_mdi_temperature_celsius
    +宅 - i_mdi_temperature_fahrenheit
    +洞 - i_mdi_temperature_kelvin
    +暴 - i_mdi_tennis
    +輻 - i_mdi_tent
    +行 - i_mdi_terrain
    +降 - i_mdi_text_to_speech
    +見 - i_mdi_text_to_speech_off
    +廓 - i_mdi_texture
    +兀 - i_mdi_theater
    +嗀 - i_mdi_theme_light_dark
    +﨎 - i_mdi_thermometer
    +﨏 - i_mdi_thermometer_lines
    +塚 - i_mdi_thumb_down
    +﨑 - i_mdi_thumb_down_outline
    +晴 - i_mdi_thumb_up
    +﨓 - i_mdi_thumb_up_outline
    +﨔 - i_mdi_thumbs_up_down
    +凞 - i_mdi_ticket
    +猪 - i_mdi_ticket_account
    +益 - i_mdi_ticket_confirmation
    +礼 - i_mdi_tie
    +神 - i_mdi_timelapse
    +祥 - i_mdi_timer
    +福 - i_mdi_timer_10
    +靖 - i_mdi_timer_3
    +精 - i_mdi_timer_off
    +羽 - i_mdi_timer_sand
    +﨟 - i_mdi_timetable
    +蘒 - i_mdi_toggle_switch
    +﨡 - i_mdi_toggle_switch_off
    +諸 - i_mdi_tooltip
    +﨣 - i_mdi_tooltip_edit
    +﨤 - i_mdi_tooltip_image
    +逸 - i_mdi_tooltip_outline
    +都 - i_mdi_tooltip_outline_plus
    +﨧 - i_mdi_tooltip_text
    +﨨 - i_mdi_tooth
    +﨩 - i_mdi_tor
    +飯 - i_mdi_traffic_light
    +飼 - i_mdi_train
    +館 - i_mdi_tram
    +鶴 - i_mdi_transcribe
    +郞 - i_mdi_transcribe_close
    +隷 - i_mdi_transfer
    +侮 - i_mdi_tree
    +僧 - i_mdi_trello
    +免 - i_mdi_trending_down
    +勉 - i_mdi_trending_neutral
    +勤 - i_mdi_trending_up
    +卑 - i_mdi_triangle
    +喝 - i_mdi_triangle_outline
    +嘆 - i_mdi_trophy
    +器 - i_mdi_trophy_award
    +塀 - i_mdi_trophy_outline
    +墨 - i_mdi_trophy_variant
    +層 - i_mdi_trophy_variant_outline
    +屮 - i_mdi_truck
    +悔 - i_mdi_truck_delivery
    +慨 - i_mdi_tshirt_crew
    +憎 - i_mdi_tshirt_v
    +懲 - i_mdi_tumblr
    +敏 - i_mdi_tumblr_reblog
    +既 - i_mdi_twitch
    +暑 - i_mdi_twitter
    +梅 - i_mdi_twitter_box
    +海 - i_mdi_twitter_circle
    +渚 - i_mdi_twitter_retweet
    +漢 - i_mdi_ubuntu
    +煮 - i_mdi_umbraco
    +爫 - i_mdi_umbrella
    +琢 - i_mdi_umbrella_outline
    +碑 - i_mdi_undo
    +社 - i_mdi_undo_variant
    +祉 - i_mdi_unfold_less_horizontal
    +祈 - i_mdi_unfold_more_horizontal
    +祐 - i_mdi_ungroup
    +祖 - i_mdi_untappd
    +祝 - i_mdi_upload
    +禍 - i_mdi_usb
    +禎 - i_mdi_vector_arrange_above
    +穀 - i_mdi_vector_arrange_below
    +突 - i_mdi_vector_circle
    +節 - i_mdi_vector_circle_variant
    +練 - i_mdi_vector_combine
    +縉 - i_mdi_vector_curve
    +繁 - i_mdi_vector_difference
    +署 - i_mdi_vector_difference_ab
    +者 - i_mdi_vector_difference_ba
    +臭 - i_mdi_vector_intersection
    +艹 - i_mdi_vector_line
    +艹 - i_mdi_vector_point
    +著 - i_mdi_vector_polygon
    +褐 - i_mdi_vector_polyline
    +視 - i_mdi_vector_selection
    +謁 - i_mdi_vector_triangle
    +謹 - i_mdi_vector_union
    +賓 - i_mdi_verified
    +贈 - i_mdi_vibrate
    +辶 - i_mdi_video
    +逸 - i_mdi_video_off
    +難 - i_mdi_video_switch
    +響 - i_mdi_view_agenda
    +頻 - i_mdi_view_array
    +恵 - i_mdi_view_carousel
    +𤋮 - i_mdi_view_column
    +舘 - i_mdi_view_dashboard
    +﩮 - i_mdi_view_day
    +﩯 - i_mdi_view_grid
    +並 - i_mdi_view_headline
    +况 - i_mdi_view_list
    +全 - i_mdi_view_module
    +侀 - i_mdi_view_quilt
    +充 - i_mdi_view_stream
    +冀 - i_mdi_view_week
    +勇 - i_mdi_vimeo
    +勺 - i_mdi_venmo
    +喝 - i_mdi_vk
    +啕 - i_mdi_vk_box
    +喙 - i_mdi_vk_circle
    +嗢 - i_mdi_vlc
    +塚 - i_mdi_voicemail
    +墳 - i_mdi_volume_high
    +奄 - i_mdi_volume_low
    +奔 - i_mdi_volume_medium
    +婢 - i_mdi_volume_off
    +嬨 - i_mdi_vpn
    +廒 - i_mdi_walk
    +廙 - i_mdi_wallet
    +彩 - i_mdi_wallet_giftcard
    +徭 - i_mdi_wallet_membership
    +惘 - i_mdi_wallet_travel
    +慎 - i_mdi_wan
    +愈 - i_mdi_watch
    +憎 - i_mdi_watch_export
    +慠 - i_mdi_watch_import
    +懲 - i_mdi_water
    +戴 - i_mdi_water_off
    +揄 - i_mdi_water_percent
    +搜 - i_mdi_water_pump
    +摒 - i_mdi_weather_cloudy
    +敖 - i_mdi_weather_fog
    +晴 - i_mdi_weather_hail
    +朗 - i_mdi_weather_lightning
    +望 - i_mdi_weather_night
    +杖 - i_mdi_weather_partlycloudy
    +歹 - i_mdi_weather_pouring
    +殺 - i_mdi_weather_rainy
    +流 - i_mdi_weather_snowy
    +滛 - i_mdi_weather_sunny
    +滋 - i_mdi_weather_sunset
    +漢 - i_mdi_weather_sunset_down
    +瀞 - i_mdi_weather_sunset_up
    +煮 - i_mdi_weather_windy
    +瞧 - i_mdi_weather_windy_variant
    +爵 - i_mdi_web
    +犯 - i_mdi_webcam
    +猪 - i_mdi_weight
    +瑱 - i_mdi_weight_kilogram
    +甆 - i_mdi_whatsapp
    +画 - i_mdi_wheelchair_accessibility
    +瘝 - i_mdi_white_balance_auto
    +瘟 - i_mdi_white_balance_incandescent
    +益 - i_mdi_white_balance_iridescent
    +盛 - i_mdi_white_balance_sunny
    +直 - i_mdi_wifi
    +睊 - i_mdi_wifi_off
    +着 - i_mdi_wii
    +磌 - i_mdi_wikipedia
    +窱 - i_mdi_window_close
    +節 - i_mdi_window_closed
    +类 - i_mdi_window_maximize
    +絛 - i_mdi_window_minimize
    +練 - i_mdi_window_open
    +缾 - i_mdi_window_restore
    +者 - i_mdi_windows
    +荒 - i_mdi_wordpress
    +華 - i_mdi_worker
    +蝹 - i_mdi_wrap
    +襁 - i_mdi_wrench
    +覆 - i_mdi_wunderlist
    +視 - i_mdi_xbox
    +調 - i_mdi_xbox_controller
    +諸 - i_mdi_xbox_controller_off
    +請 - i_mdi_xda
    +謁 - i_mdi_xing
    +諾 - i_mdi_xing_box
    +諭 - i_mdi_xing_circle
    +謹 - i_mdi_xml
    +變 - i_mdi_yeast
    +贈 - i_mdi_yelp
    +輸 - i_mdi_youtube_play
    +遲 - i_mdi_zip_box
    +醙 - i_mdi_surround_sound
    +鉶 - i_mdi_vector_rectangle
    +陼 - i_mdi_playlist_check
    +難 - i_mdi_format_line_style
    +靖 - i_mdi_format_line_weight
    +韛 - i_mdi_translate
    +響 - i_mdi_voice
    +頋 - i_mdi_opacity
    +頻 - i_mdi_near_me
    +鬒 - i_mdi_clock_alert
    +龜 - i_mdi_human_pregnant
    +𢡊 - i_mdi_sticker
    +𢡄 - i_mdi_scale_balance
    +𣏕 - i_mdi_account_card_details
    +㮝 - i_mdi_account_multiple_minus
    +䀘 - i_mdi_airplane_landing
    +䀹 - i_mdi_airplane_takeoff
    +𥉉 - i_mdi_alert_circle_outline
    +𥳐 - i_mdi_altimeter
    +𧻓 - i_mdi_animation
    +齃 - i_mdi_book_minus
    +龎 - i_mdi_book_open_page_variant
    +﫚 - i_mdi_book_plus
    +﫛 - i_mdi_boombox
    +﫜 - i_mdi_bullseye
    +﫝 - i_mdi_comment_remove
    +﫞 - i_mdi_camera_off
    +﫟 - i_mdi_check_circle
    +﫠 - i_mdi_check_circle_outline
    +﫡 - i_mdi_candle
    +﫢 - i_mdi_chart_bubble
    +﫣 - i_mdi_credit_card_off
    +﫤 - i_mdi_cup_off
    +﫥 - i_mdi_copyright
    +﫦 - i_mdi_cursor_text
    +﫧 - i_mdi_delete_forever
    +﫨 - i_mdi_delete_sweep
    +﫩 - i_mdi_dice_d20
    +﫪 - i_mdi_dice_d4
    +﫫 - i_mdi_dice_d6
    +﫬 - i_mdi_dice_d8
    +﫭 - i_mdi_disk
    +﫮 - i_mdi_email_open_outline
    +﫯 - i_mdi_email_variant
    +﫰 - i_mdi_ev_station
    +﫱 - i_mdi_food_fork_drink
    +﫲 - i_mdi_food_off
    +﫳 - i_mdi_format_title
    +﫴 - i_mdi_google_maps
    +﫵 - i_mdi_heart_pulse
    +﫶 - i_mdi_highway
    +﫷 - i_mdi_home_map_marker
    +﫸 - i_mdi_incognito
    +﫹 - i_mdi_kettle
    +﫺 - i_mdi_lock_plus
    +﫻 - i_mdi_login_variant
    +﫼 - i_mdi_logout_variant
    +﫽 - i_mdi_music_note_bluetooth
    +﫾 - i_mdi_music_note_bluetooth_off
    +﫿 - i_mdi_page_first
    +ff - i_mdi_page_last
    +fi - i_mdi_phone_classic
    +fl - i_mdi_priority_high
    +ffi - i_mdi_priority_low
    +ffl - i_mdi_qqchat
    +ſt - i_mdi_pool
    +st - i_mdi_rounded_corner
    +﬇ - i_mdi_rowing
    +﬈ - i_mdi_saxophone
    +﬉ - i_mdi_signal_variant
    +﬊ - i_mdi_stackexchange
    +﬋ - i_mdi_subdirectory_arrow_left
    +﬌ - i_mdi_subdirectory_arrow_right
    +﬍ - i_mdi_textbox
    +﬎ - i_mdi_violin
    +﬏ - i_mdi_visualstudio
    +﬐ - i_mdi_wechat
    +﬑ - i_mdi_watermark
    +﬒ - i_mdi_file_hidden
    +ﬓ - i_mdi_application
    +ﬔ - i_mdi_arrow_collapse
    +ﬕ - i_mdi_arrow_expand
    +ﬖ - i_mdi_bowl
    +ﬗ - i_mdi_bridge
    +﬘ - i_mdi_buffer
    +﬙ - i_mdi_chip
    +﬚ - i_mdi_content_save_settings
    +﬛ - i_mdi_dialpad
    +﬜ - i_mdi_dictionary
    +יִ - i_mdi_format_horizontal_align_center
    +ﬞ - i_mdi_format_horizontal_align_left
    +ײַ - i_mdi_format_horizontal_align_right
    +ﬠ - i_mdi_format_vertical_align_bottom
    +ﬡ - i_mdi_format_vertical_align_center
    +ﬢ - i_mdi_format_vertical_align_top
    +ﬣ - i_mdi_hackernews
    +ﬤ - i_mdi_help_circle_outline
    +ﬥ - i_mdi_json
    +ﬦ - i_mdi_lambda
    +ﬧ - i_mdi_matrix
    +ﬨ - i_mdi_meteor
    +﬩ - i_mdi_mixcloud
    +שׁ - i_mdi_sigma_lower
    +שׂ - i_mdi_source_branch
    +שּׁ - i_mdi_source_merge
    +שּׂ - i_mdi_tune
    +אַ - i_mdi_webhook
    +אָ - i_mdi_account_settings
    +אּ - i_mdi_account_settings_variant
    +בּ - i_mdi_apple_keyboard_caps
    +גּ - i_mdi_apple_keyboard_command
    +דּ - i_mdi_apple_keyboard_control
    +הּ - i_mdi_apple_keyboard_option
    +וּ - i_mdi_apple_keyboard_shift
    +זּ - i_mdi_box_shadow
    +﬷ - i_mdi_cards
    +טּ - i_mdi_cards_outline
    +יּ - i_mdi_cards_playing_outline
    +ךּ - i_mdi_checkbox_multiple_blank_circle
    +כּ - i_mdi_checkbox_multiple_blank_circle_outline
    +לּ - i_mdi_checkbox_multiple_marked_circle
    +﬽ - i_mdi_checkbox_multiple_marked_circle_outline
    +מּ - i_mdi_cloud_sync
    +﬿ - i_mdi_collage
    +נּ - i_mdi_directions_fork
    +סּ - i_mdi_eraser_variant
    +﭂ - i_mdi_face
    +ףּ - i_mdi_face_profile
    +פּ - i_mdi_file_tree
    +﭅ - i_mdi_format_annotation_plus
    +צּ - i_mdi_gas_cylinder
    +קּ - i_mdi_grease_pencil
    +רּ - i_mdi_human_female
    +שּ - i_mdi_human_greeting
    +תּ - i_mdi_human_handsdown
    +וֹ - i_mdi_human_handsup
    +בֿ - i_mdi_human_male
    +כֿ - i_mdi_information_variant
    +פֿ - i_mdi_lead_pencil
    +ﭏ - i_mdi_map_marker_minus
    +ﭐ - i_mdi_map_marker_plus
    +ﭑ - i_mdi_marker
    +ﭒ - i_mdi_message_plus
    +ﭓ - i_mdi_microscope
    +ﭔ - i_mdi_move_resize
    +ﭕ - i_mdi_move_resize_variant
    +ﭖ - i_mdi_paw_off
    +ﭗ - i_mdi_phone_minus
    +ﭘ - i_mdi_phone_plus
    +ﭙ - i_mdi_pot
    +ﭚ - i_mdi_pot_mix
    +ﭛ - i_mdi_serial_port
    +ﭜ - i_mdi_shape_circle_plus
    +ﭝ - i_mdi_shape_polygon_plus
    +ﭞ - i_mdi_shape_rectangle_plus
    +ﭟ - i_mdi_shape_square_plus
    +ﭠ - i_mdi_skip_next_circle
    +ﭡ - i_mdi_skip_next_circle_outline
    +ﭢ - i_mdi_skip_previous_circle
    +ﭣ - i_mdi_skip_previous_circle_outline
    +ﭤ - i_mdi_spray
    +ﭥ - i_mdi_stop_circle
    +ﭦ - i_mdi_stop_circle_outline
    +ﭧ - i_mdi_test_tube
    +ﭨ - i_mdi_text_shadow
    +ﭩ - i_mdi_tune_vertical
    +ﭪ - i_mdi_cart_off
    +ﭫ - i_mdi_chart_gantt
    +ﭬ - i_mdi_chart_scatterplot_hexbin
    +ﭭ - i_mdi_chart_timeline
    +ﭮ - i_mdi_discord
    +ﭯ - i_mdi_file_restore
    +ﭰ - i_mdi_language_c
    +ﭱ - i_mdi_language_cpp
    +ﭲ - i_mdi_xaml
    +ﭳ - i_mdi_bandcamp
    +ﭴ - i_mdi_credit_card_plus
    +ﭵ - i_mdi_itunes
    +ﭶ - i_mdi_bow_tie
    +ﭷ - i_mdi_calendar_range
    +ﭸ - i_mdi_currency_usd_off
    +ﭹ - i_mdi_flash_red_eye
    +ﭺ - i_mdi_oar
    +ﭻ - i_mdi_piano
    +ﭼ - i_mdi_weather_lightning_rainy
    +ﭽ - i_mdi_weather_snowy_rainy
    +ﭾ - i_mdi_yin_yang
    +ﭿ - i_mdi_tower_beach
    +ﮀ - i_mdi_tower_fire
    +ﮁ - i_mdi_delete_circle
    +ﮂ - i_mdi_dna
    +ﮃ - i_mdi_hamburger
    +ﮄ - i_mdi_gondola
    +ﮅ - i_mdi_inbox
    +ﮆ - i_mdi_reorder_horizontal
    +ﮇ - i_mdi_reorder_vertical
    +ﮈ - i_mdi_security_home
    +ﮉ - i_mdi_tag_heart
    +ﮊ - i_mdi_skull
    +ﮋ - i_mdi_solid
    +ﮌ - i_mdi_alarm_snooze
    +ﮍ - i_mdi_baby_buggy
    +ﮎ - i_mdi_beaker
    +ﮏ - i_mdi_bomb
    +ﮐ - i_mdi_calendar_question
    +ﮑ - i_mdi_camera_burst
    +ﮒ - i_mdi_code_tags_check
    +ﮓ - i_mdi_coins
    +ﮔ - i_mdi_crop_rotate
    +ﮕ - i_mdi_developer_board
    +ﮖ - i_mdi_do_not_disturb
    +ﮗ - i_mdi_do_not_disturb_off
    +ﮘ - i_mdi_douban
    +ﮙ - i_mdi_emoticon_dead
    +ﮚ - i_mdi_emoticon_excited
    +ﮛ - i_mdi_folder_star
    +ﮜ - i_mdi_format_color_text
    +ﮝ - i_mdi_format_section
    +ﮞ - i_mdi_gradient
    +ﮟ - i_mdi_home_outline
    +ﮠ - i_mdi_message_bulleted
    +ﮡ - i_mdi_message_bulleted_off
    +ﮢ - i_mdi_nuke
    +ﮣ - i_mdi_power_plug
    +ﮤ - i_mdi_power_plug_off
    +ﮥ - i_mdi_publish
    +ﮦ - i_mdi_restore
    +ﮧ - i_mdi_robot
    +ﮨ - i_mdi_format_rotate_90
    +ﮩ - i_mdi_scanner
    +ﮪ - i_mdi_subway
    +ﮫ - i_mdi_timer_sand_empty
    +ﮬ - i_mdi_transit_transfer
    +ﮭ - i_mdi_unity
    +ﮮ - i_mdi_update
    +ﮯ - i_mdi_watch_vibrate
    +ﮰ - i_mdi_angular
    +ﮱ - i_mdi_dolby
    +﮲ - i_mdi_emby
    +﮳ - i_mdi_lamp
    +﮴ - i_mdi_menu_down_outline
    +﮵ - i_mdi_menu_up_outline
    +﮶ - i_mdi_note_multiple
    +﮷ - i_mdi_note_multiple_outline
    +﮸ - i_mdi_plex
    +﮹ - i_mdi_plane_shield
    +﮺ - i_mdi_account_edit
    +﮻ - i_mdi_alert_decagram
    +﮼ - i_mdi_all_inclusive
    +﮽ - i_mdi_angularjs
    +﮾ - i_mdi_arrow_down_box
    +﮿ - i_mdi_arrow_left_box
    +﯀ - i_mdi_arrow_right_box
    +﯁ - i_mdi_arrow_up_box
    +﯂ - i_mdi_asterisk
    +﯃ - i_mdi_bomb_off
    +﯄ - i_mdi_bootstrap
    +﯅ - i_mdi_cards_variant
    +﯆ - i_mdi_clipboard_flow
    +﯇ - i_mdi_close_outline
    +﯈ - i_mdi_coffee_outline
    +﯉ - i_mdi_contacts
    +﯊ - i_mdi_delete_empty
    +﯋ - i_mdi_earth_box
    +﯌ - i_mdi_earth_box_off
    +﯍ - i_mdi_email_alert
    +﯎ - i_mdi_eye_outline
    +﯏ - i_mdi_eye_off_outline
    +﯐ - i_mdi_fast_forward_outline
    +﯑ - i_mdi_feather
    +﯒ - i_mdi_find_replace
    +ﯓ - i_mdi_flash_outline
    +ﯔ - i_mdi_format_font
    +ﯕ - i_mdi_format_page_break
    +ﯖ - i_mdi_format_pilcrow
    +ﯗ - i_mdi_garage
    +ﯘ - i_mdi_garage_open
    +ﯙ - i_mdi_github_face
    +ﯚ - i_mdi_google_keep
    +ﯛ - i_mdi_google_photos
    +ﯜ - i_mdi_heart_half_full
    +ﯝ - i_mdi_heart_half
    +ﯞ - i_mdi_heart_half_outline
    +ﯟ - i_mdi_hexagon_multiple
    +ﯠ - i_mdi_hook
    +ﯡ - i_mdi_hook_off
    +ﯢ - i_mdi_infinity
    +ﯣ - i_mdi_language_swift
    +ﯤ - i_mdi_language_typescript
    +ﯥ - i_mdi_laptop_off
    +ﯦ - i_mdi_lightbulb_on
    +ﯧ - i_mdi_lightbulb_on_outline
    +ﯨ - i_mdi_lock_pattern
    +ﯩ - i_mdi_loop
    +ﯪ - i_mdi_magnify_minus_outline
    +ﯫ - i_mdi_magnify_plus_outline
    +ﯬ - i_mdi_mailbox
    +ﯭ - i_mdi_medical_bag
    +ﯮ - i_mdi_message_settings
    +ﯯ - i_mdi_message_settings_variant
    +ﯰ - i_mdi_minus_box_outline
    +ﯱ - i_mdi_network
    +ﯲ - i_mdi_download_network
    +ﯳ - i_mdi_help_network
    +ﯴ - i_mdi_upload_network
    +ﯵ - i_mdi_npm
    +ﯶ - i_mdi_nut
    +ﯷ - i_mdi_octagram
    +ﯸ - i_mdi_page_layout_body
    +ﯹ - i_mdi_page_layout_footer
    +ﯺ - i_mdi_page_layout_header
    +ﯻ - i_mdi_page_layout_sidebar_left
    +ﯼ - i_mdi_page_layout_sidebar_right
    +ﯽ - i_mdi_pencil_circle
    +ﯾ - i_mdi_pentagon
    +ﯿ - i_mdi_pentagon_outline
    +ﰀ - i_mdi_pillar
    +ﰁ - i_mdi_pistol
    +ﰂ - i_mdi_plus_box_outline
    +ﰃ - i_mdi_plus_outline
    +ﰄ - i_mdi_prescription
    +ﰅ - i_mdi_printer_settings
    +ﰆ - i_mdi_react
    +ﰇ - i_mdi_restart
    +ﰈ - i_mdi_rewind_outline
    +ﰉ - i_mdi_rhombus
    +ﰊ - i_mdi_rhombus_outline
    +ﰋ - i_mdi_roomba
    +ﰌ - i_mdi_run
    +ﰍ - i_mdi_search_web
    +ﰎ - i_mdi_shovel
    +ﰏ - i_mdi_shovel_off
    +ﰐ - i_mdi_signal_2g
    +ﰑ - i_mdi_signal_3g
    +ﰒ - i_mdi_signal_4g
    +ﰓ - i_mdi_signal_hspa
    +ﰔ - i_mdi_signal_hspa_plus
    +ﰕ - i_mdi_snowflake
    +ﰖ - i_mdi_source_commit
    +ﰗ - i_mdi_source_commit_end
    +ﰘ - i_mdi_source_commit_end_local
    +ﰙ - i_mdi_source_commit_local
    +ﰚ - i_mdi_source_commit_next_local
    +ﰛ - i_mdi_source_commit_start
    +ﰜ - i_mdi_source_commit_start_next_local
    +ﰝ - i_mdi_speaker_wireless
    +ﰞ - i_mdi_stadium
    +ﰟ - i_mdi_svg
    +ﰠ - i_mdi_tag_plus
    +ﰡ - i_mdi_tag_remove
    +ﰢ - i_mdi_ticket_percent
    +ﰣ - i_mdi_tilde
    +ﰤ - i_mdi_treasure_chest
    +ﰥ - i_mdi_truck_trailer
    +ﰦ - i_mdi_view_parallel
    +ﰧ - i_mdi_view_sequential
    +ﰨ - i_mdi_washing_machine
    +ﰩ - i_mdi_webpack
    +ﰪ - i_mdi_widgets
    +ﰫ - i_mdi_wiiu
    +ﰬ - i_mdi_arrow_down_bold
    +ﰭ - i_mdi_arrow_down_bold_box
    +ﰮ - i_mdi_arrow_down_bold_box_outline
    +ﰯ - i_mdi_arrow_left_bold
    +ﰰ - i_mdi_arrow_left_bold_box
    +ﰱ - i_mdi_arrow_left_bold_box_outline
    +ﰲ - i_mdi_arrow_right_bold
    +ﰳ - i_mdi_arrow_right_bold_box
    +ﰴ - i_mdi_arrow_right_bold_box_outline
    +ﰵ - i_mdi_arrow_up_bold
    +ﰶ - i_mdi_arrow_up_bold_box
    +ﰷ - i_mdi_arrow_up_bold_box_outline
    +ﰸ - i_mdi_cancel
    +ﰹ - i_mdi_file_account
    +ﰺ - i_mdi_gesture_double_tap
    +ﰻ - i_mdi_gesture_swipe_down
    +ﰼ - i_mdi_gesture_swipe_left
    +ﰽ - i_mdi_gesture_swipe_right
    +ﰾ - i_mdi_gesture_swipe_up
    +ﰿ - i_mdi_gesture_tap
    +ﱀ - i_mdi_gesture_two_double_tap
    +ﱁ - i_mdi_gesture_two_tap
    +ﱂ - i_mdi_humble_bundle
    +ﱃ - i_mdi_kickstarter
    +ﱄ - i_mdi_netflix
    +ﱅ - i_mdi_onenote
    +ﱆ - i_mdi_periscope
    +ﱇ - i_mdi_uber
    +ﱈ - i_mdi_vector_radius
    +ﱉ - i_mdi_xbox_controller_battery_alert
    +ﱊ - i_mdi_xbox_controller_battery_empty
    +ﱋ - i_mdi_xbox_controller_battery_full
    +ﱌ - i_mdi_xbox_controller_battery_low
    +ﱍ - i_mdi_xbox_controller_battery_medium
    +ﱎ - i_mdi_xbox_controller_battery_unknown
    +ﱏ - i_mdi_clipboard_plus
    +ﱐ - i_mdi_file_plus
    +ﱑ - i_mdi_format_align_bottom
    +ﱒ - i_mdi_format_align_middle
    +ﱓ - i_mdi_format_align_top
    +ﱔ - i_mdi_format_list_checks
    +ﱕ - i_mdi_format_quote_open
    +ﱖ - i_mdi_grid_large
    +ﱗ - i_mdi_heart_off
    +ﱘ - i_mdi_music
    +ﱙ - i_mdi_music_off
    +ﱚ - i_mdi_tab_plus
    +ﱛ - i_mdi_volume_plus
    +ﱜ - i_mdi_volume_minus
    +ﱝ - i_mdi_volume_mute
    +ﱞ - i_mdi_unfold_less_vertical
    +ﱟ - i_mdi_unfold_more_vertical
    +ﱠ - i_mdi_taco
    +ﱡ - i_mdi_square_outline
    +ﱢ - i_mdi_square
    +ﱣ - i_mdi_circle
    +ﱤ - i_mdi_circle_outline
    +ﱥ - i_mdi_alert_octagram
    +ﱦ - i_mdi_atom
    +ﱧ - i_mdi_ceiling_light
    +ﱨ - i_mdi_chart_bar_stacked
    +ﱩ - i_mdi_chart_line_stacked
    +ﱪ - i_mdi_decagram
    +ﱫ - i_mdi_decagram_outline
    +ﱬ - i_mdi_dice_multiple
    +ﱭ - i_mdi_dice_d10
    +ﱮ - i_mdi_folder_open
    +ﱯ - i_mdi_guitar_acoustic
    +ﱰ - i_mdi_loading
    +ﱱ - i_mdi_lock_reset
    +ﱲ - i_mdi_ninja
    +ﱳ - i_mdi_octagram_outline
    +ﱴ - i_mdi_pencil_circle_outline
    +ﱵ - i_mdi_selection_off
    +ﱶ - i_mdi_set_all
    +ﱷ - i_mdi_set_center
    +ﱸ - i_mdi_set_center_right
    +ﱹ - i_mdi_set_left
    +ﱺ - i_mdi_set_left_center
    +ﱻ - i_mdi_set_left_right
    +ﱼ - i_mdi_set_none
    +ﱽ - i_mdi_set_right
    +ﱾ - i_mdi_shield_half_full
    +ﱿ - i_mdi_sign_direction
    +ﲀ - i_mdi_sign_text
    +ﲁ - i_mdi_signal_off
    +ﲂ - i_mdi_square_root
    +ﲃ - i_mdi_sticker_emoji
    +ﲄ - i_mdi_summit
    +ﲅ - i_mdi_sword_cross
    +ﲆ - i_mdi_truck_fast
    +ﲇ - i_mdi_yammer
    +ﲈ - i_mdi_cast_off
    +ﲉ - i_mdi_help_box
    +ﲊ - i_mdi_timer_sand_full
    +ﲋ - i_mdi_waves
    +ﲌ - i_mdi_alarm_bell
    +ﲍ - i_mdi_alarm_light
    +ﲎ - i_mdi_android_head
    +ﲏ - i_mdi_approval
    +ﲐ - i_mdi_arrow_collapse_down
    +ﲑ - i_mdi_arrow_collapse_left
    +ﲒ - i_mdi_arrow_collapse_right
    +ﲓ - i_mdi_arrow_collapse_up
    +ﲔ - i_mdi_arrow_expand_down
    +ﲕ - i_mdi_arrow_expand_left
    +ﲖ - i_mdi_arrow_expand_right
    +ﲗ - i_mdi_arrow_expand_up
    +ﲘ - i_mdi_book_secure
    +ﲙ - i_mdi_book_unsecure
    +ﲚ - i_mdi_bus_articulated_end
    +ﲛ - i_mdi_bus_articulated_front
    +ﲜ - i_mdi_bus_double_decker
    +ﲝ - i_mdi_bus_school
    +ﲞ - i_mdi_bus_side
    +ﲟ - i_mdi_camera_gopro
    +ﲠ - i_mdi_camera_metering_center
    +ﲡ - i_mdi_camera_metering_matrix
    +ﲢ - i_mdi_camera_metering_partial
    +ﲣ - i_mdi_camera_metering_spot
    +ﲤ - i_mdi_cannabis
    +ﲥ - i_mdi_car_convertible
    +ﲦ - i_mdi_car_estate
    +ﲧ - i_mdi_car_hatchback
    +ﲨ - i_mdi_car_pickup
    +ﲩ - i_mdi_car_side
    +ﲪ - i_mdi_car_sports
    +ﲫ - i_mdi_caravan
    +ﲬ - i_mdi_cctv
    +ﲭ - i_mdi_chart_donut
    +ﲮ - i_mdi_chart_donut_variant
    +ﲯ - i_mdi_chart_line_variant
    +ﲰ - i_mdi_chili_hot
    +ﲱ - i_mdi_chili_medium
    +ﲲ - i_mdi_chili_mild
    +ﲳ - i_mdi_cloud_braces
    +ﲴ - i_mdi_cloud_tags
    +ﲵ - i_mdi_console_line
    +ﲶ - i_mdi_corn
    +ﲷ - i_mdi_currency_chf
    +ﲸ - i_mdi_currency_cny
    +ﲹ - i_mdi_currency_eth
    +ﲺ - i_mdi_currency_jpy
    +ﲻ - i_mdi_currency_krw
    +ﲼ - i_mdi_currency_sign
    +ﲽ - i_mdi_currency_twd
    +ﲾ - i_mdi_desktop_classic
    +ﲿ - i_mdi_dip_switch
    +ﳀ - i_mdi_donkey
    +ﳁ - i_mdi_dots_horizontal_circle
    +ﳂ - i_mdi_dots_vertical_circle
    +ﳃ - i_mdi_ear_hearing
    +ﳄ - i_mdi_elephant
    +ﳅ - i_mdi_eventbrite
    +ﳆ - i_mdi_food_croissant
    +ﳇ - i_mdi_forklift
    +ﳈ - i_mdi_fuel
    +ﳉ - i_mdi_gesture
    +ﳊ - i_mdi_google_analytics
    +ﳋ - i_mdi_google_assistant
    +ﳌ - i_mdi_headphones_off
    +ﳍ - i_mdi_high_definition
    +ﳎ - i_mdi_home_assistant
    +ﳏ - i_mdi_home_automation
    +ﳐ - i_mdi_home_circle
    +ﳑ - i_mdi_language_go
    +ﳒ - i_mdi_language_r
    +ﳓ - i_mdi_lava_lamp
    +ﳔ - i_mdi_led_strip
    +ﳕ - i_mdi_locker
    +ﳖ - i_mdi_locker_multiple
    +ﳗ - i_mdi_map_marker_outline
    +ﳘ - i_mdi_metronome
    +ﳙ - i_mdi_metronome_tick
    +ﳚ - i_mdi_micro_sd
    +ﳛ - i_mdi_mixer
    +ﳜ - i_mdi_movie_roll
    +ﳝ - i_mdi_mushroom
    +ﳞ - i_mdi_mushroom_outline
    +ﳟ - i_mdi_nintendo_switch
    +ﳠ - i_mdi_null
    +ﳡ - i_mdi_passport
    +ﳢ - i_mdi_periodic_table_co2
    +ﳣ - i_mdi_pipe
    +ﳤ - i_mdi_pipe_disconnected
    +ﳥ - i_mdi_power_socket_eu
    +ﳦ - i_mdi_power_socket_uk
    +ﳧ - i_mdi_power_socket_us
    +ﳨ - i_mdi_rice
    +ﳩ - i_mdi_ring
    +ﳪ - i_mdi_sass
    +ﳫ - i_mdi_send_secure
    +ﳬ - i_mdi_soy_sauce
    +ﳭ - i_mdi_standard_definition
    +ﳮ - i_mdi_surround_sound_2_0
    +ﳯ - i_mdi_surround_sound_3_1
    +ﳰ - i_mdi_surround_sound_5_1
    +ﳱ - i_mdi_surround_sound_7_1
    +ﳲ - i_mdi_television_classic
    +ﳳ - i_mdi_textbox_password
    +ﳴ - i_mdi_thought_bubble
    +ﳵ - i_mdi_thought_bubble_outline
    +ﳶ - i_mdi_trackpad
    +ﳷ - i_mdi_ultra_high_definition
    +ﳸ - i_mdi_van_passenger
    +ﳹ - i_mdi_van_utility
    +ﳺ - i_mdi_vanish
    +ﳻ - i_mdi_video_3d
    +ﳼ - i_mdi_wall
    +ﳽ - i_mdi_xmpp
    +ﳾ - i_mdi_account_multiple_plus_outline
    +ﳿ - i_mdi_account_plus_outline
    +ﴀ - i_mdi_allo
    +ﴁ - i_mdi_artist
    +ﴂ - i_mdi_atlassian
    +ﴃ - i_mdi_azure
    +ﴄ - i_mdi_basketball
    +ﴅ - i_mdi_battery_charging_wireless
    +ﴆ - i_mdi_battery_charging_wireless_10
    +ﴇ - i_mdi_battery_charging_wireless_20
    +ﴈ - i_mdi_battery_charging_wireless_30
    +ﴉ - i_mdi_battery_charging_wireless_40
    +ﴊ - i_mdi_battery_charging_wireless_50
    +ﴋ - i_mdi_battery_charging_wireless_60
    +ﴌ - i_mdi_battery_charging_wireless_70
    +ﴍ - i_mdi_battery_charging_wireless_80
    +ﴎ - i_mdi_battery_charging_wireless_90
    +ﴏ - i_mdi_battery_charging_wireless_alert
    +ﴐ - i_mdi_battery_charging_wireless_outline
    +ﴑ - i_mdi_bitcoin
    +ﴒ - i_mdi_briefcase_outline
    +ﴓ - i_mdi_cellphone_wireless
    +ﴔ - i_mdi_clover
    +ﴕ - i_mdi_comment_question
    +ﴖ - i_mdi_content_save_outline
    +ﴗ - i_mdi_delete_restore
    +ﴘ - i_mdi_door
    +ﴙ - i_mdi_door_closed
    +ﴚ - i_mdi_door_open
    +ﴛ - i_mdi_fan_off
    +ﴜ - i_mdi_file_percent
    +ﴝ - i_mdi_finance
    +ﴞ - i_mdi_flash_circle
    +ﴟ - i_mdi_floor_plan
    +ﴠ - i_mdi_forum_outline
    +ﴡ - i_mdi_golf
    +ﴢ - i_mdi_google_home
    +ﴣ - i_mdi_guy_fawkes_mask
    +ﴤ - i_mdi_home_account
    +ﴥ - i_mdi_home_heart
    +ﴦ - i_mdi_hot_tub
    +ﴧ - i_mdi_hulu
    +ﴨ - i_mdi_ice_cream
    +ﴩ - i_mdi_image_off
    +ﴪ - i_mdi_karate
    +ﴫ - i_mdi_ladybug
    +ﴬ - i_mdi_notebook
    +ﴭ - i_mdi_phone_return
    +ﴮ - i_mdi_poker_chip
    +ﴯ - i_mdi_shape
    +ﴰ - i_mdi_shape_outline
    +ﴱ - i_mdi_ship_wheel
    +ﴲ - i_mdi_soccer_field
    +ﴳ - i_mdi_table_column
    +ﴴ - i_mdi_table_of_contents
    +ﴵ - i_mdi_table_row
    +ﴶ - i_mdi_table_settings
    +ﴷ - i_mdi_television_box
    +ﴸ - i_mdi_television_classic_off
    +ﴹ - i_mdi_television_off
    +ﴺ - i_mdi_towing
    +ﴻ - i_mdi_upload_multiple
    +ﴼ - i_mdi_video_4k_box
    +ﴽ - i_mdi_video_input_antenna
    +﴾ - i_mdi_video_input_component
    +﴿ - i_mdi_video_input_hdmi
    +﵀ - i_mdi_video_input_svideo
    +﵁ - i_mdi_view_dashboard_variant
    +﵂ - i_mdi_vuejs
    +﵃ - i_mdi_xamarin
    +﵄ - i_mdi_xamarin_outline
    +﵅ - i_mdi_youtube_creator_studio
    +﵆ - i_mdi_youtube_gaming
    +♥ - i_oct_heart
    +⚡ - i_oct_zap
    + - i_oct_light_bulb
    + - i_oct_repo
    + - i_oct_repo_forked
    + - i_oct_repo_push
    + - i_oct_repo_pull
    + - i_oct_book
    + - i_oct_octoface
    + - i_oct_git_pull_request
    + - i_oct_mark_github
    + - i_oct_cloud_download
    + - i_oct_cloud_upload
    + - i_oct_keyboard
    + - i_oct_gist
    + - i_oct_file_code
    + - i_oct_file_text
    + - i_oct_file_media
    + - i_oct_file_zip
    + - i_oct_file_pdf
    + - i_oct_tag
    + - i_oct_file_directory
    + - i_oct_file_submodule
    + - i_oct_person
    + - i_oct_jersey
    + - i_oct_git_commit
    + - i_oct_git_branch
    + - i_oct_git_merge
    + - i_oct_mirror
    + - i_oct_issue_opened
    + - i_oct_issue_reopened
    + - i_oct_issue_closed
    + - i_oct_star
    + - i_oct_comment
    + - i_oct_question
    + - i_oct_alert
    + - i_oct_search
    + - i_oct_gear
    + - i_oct_radio_tower
    + - i_oct_tools
    + - i_oct_sign_out
    + - i_oct_rocket
    + - i_oct_rss
    + - i_oct_clippy
    + - i_oct_sign_in
    + - i_oct_organization
    + - i_oct_device_mobile
    + - i_oct_unfold
    + - i_oct_check
    + - i_oct_mail
    + - i_oct_mail_read
    + - i_oct_arrow_up
    + - i_oct_arrow_right
    + - i_oct_arrow_down
    + - i_oct_arrow_left
    + - i_oct_pin
    + - i_oct_gift
    + - i_oct_graph
    + - i_oct_triangle_left
    + - i_oct_credit_card
    + - i_oct_clock
    + - i_oct_ruby
    + - i_oct_broadcast
    + - i_oct_key
    + - i_oct_repo_force_push
    + - i_oct_repo_clone
    + - i_oct_diff
    + - i_oct_eye
    + - i_oct_comment_discussion
    + - i_oct_mail_reply
    + - i_oct_primitive_dot
    + - i_oct_primitive_square
    + - i_oct_device_camera
    + - i_oct_device_camera_video
    + - i_oct_pencil
    + - i_oct_info
    + - i_oct_triangle_right
    + - i_oct_triangle_down
    + - i_oct_link
    + - i_oct_plus
    + - i_oct_three_bars
    + - i_oct_code
    + - i_oct_location
    + - i_oct_list_unordered
    + - i_oct_list_ordered
    + - i_oct_quote
    + - i_oct_versions
    + - i_oct_calendar
    + - i_oct_lock
    + - i_oct_diff_added
    + - i_oct_diff_removed
    + - i_oct_diff_modified
    + - i_oct_diff_renamed
    + - i_oct_horizontal_rule
    + - i_oct_arrow_small_right
    + - i_oct_milestone
    + - i_oct_checklist
    + - i_oct_megaphone
    + - i_oct_chevron_right
    + - i_oct_bookmark
    + - i_oct_settings
    + - i_oct_dashboard
    + - i_oct_history
    + - i_oct_link_external
    + - i_oct_mute
    + - i_oct_x
    + - i_oct_circle_slash
    + - i_oct_pulse
    + - i_oct_sync
    + - i_oct_telescope
    + - i_oct_gist_secret
    + - i_oct_home
    + - i_oct_stop
    + - i_oct_bug
    + - i_oct_logo_github
    + - i_oct_file_binary
    + - i_oct_database
    + - i_oct_server
    + - i_oct_diff_ignored
    + - i_oct_ellipsis
    + - i_oct_no_newline
    + - i_oct_hubot
    + - i_oct_arrow_small_up
    + - i_oct_arrow_small_down
    + - i_oct_arrow_small_left
    + - i_oct_chevron_up
    + - i_oct_chevron_down
    + - i_oct_chevron_left
    + - i_oct_triangle_up
    + - i_oct_git_compare
    + - i_oct_logo_gist
    + - i_oct_file_symlink_file
    + - i_oct_file_symlink_directory
    + - i_oct_squirrel
    + - i_oct_globe
    + - i_oct_unmute
    + - i_oct_mention
    + - i_oct_package
    + - i_oct_browser
    + - i_oct_terminal
    + - i_oct_markdown
    + - i_oct_dash
    + - i_oct_fold
    + - i_oct_inbox
    + - i_oct_trashcan
    + - i_oct_paintcan
    + - i_oct_flame
    + - i_oct_briefcase
    + - i_oct_plug
    + - i_oct_circuit_board
    + - i_oct_mortar_board
    + - i_oct_law
    + - i_oct_thumbsup
    + - i_oct_thumbsdown
    + - i_oct_desktop_download
    + - i_oct_beaker
    + - i_oct_bell
    + - i_oct_watch
    + - i_oct_shield
    + - i_oct_bold
    + - i_oct_text_size
    + - i_oct_italic
    + - i_oct_tasklist
    + - i_oct_verified
    + - i_oct_smiley
    + - i_oct_unverified
    + - i_oct_ellipses
    + - i_oct_file
    + - i_oct_grabber
    + - i_oct_plus_small
    + - i_oct_reply
    + - i_oct_device_desktop
    + - i_pl_branch
    + - i_pl_line_number i_pl_current_line_pl_line_number
    + - i_pl_hostname i_pl_readonly_pl_hostname
    + - i_ple_column_number i_ple_current_column_ple_column_number
    + - i_pl_left_hard_divider
    + - i_pl_left_soft_divider
    + - i_pl_right_hard_divider
    + - i_pl_right_soft_divider
    + - i_ple_right_half_circle_thick
    + - i_ple_right_half_circle_thin
    + - i_ple_left_half_circle_thick
    + - i_ple_left_half_circle_thin
    + - i_ple_lower_left_triangle
    + - i_ple_backslash_separator
    + - i_ple_lower_right_triangle
    + - i_ple_forwardslash_separator
    + - i_ple_upper_left_triangle
    + - i_ple_forwardslash_separator_redundant
    + - i_ple_upper_right_triangle
    + - i_ple_backslash_separator_redundant
    + - i_ple_flame_thick
    + - i_ple_flame_thin
    + - i_ple_flame_thick_mirrored
    + - i_ple_flame_thin_mirrored
    + - i_ple_pixelated_squares_small
    + - i_ple_pixelated_squares_small_mirrored
    + - i_ple_pixelated_squares_big
    + - i_ple_pixelated_squares_big_mirrored
    + - i_ple_ice_waveform
    + - i_ple_ice_waveform_mirrored
    + - i_ple_honeycomb
    + - i_ple_honeycomb_outline
    + - i_ple_lego_separator
    + - i_ple_lego_separator_thin
    + - i_ple_lego_block_facing
    + - i_ple_lego_block_sideways
    + - i_ple_trapezoid_top_bottom
    + - i_ple_trapezoid_top_bottom_mirrored
    + - i_pom_clean_code
    + - i_pom_pomodoro_done
    + - i_pom_pomodoro_estimated
    + - i_pom_pomodoro_ticking
    + - i_pom_pomodoro_squashed
    + - i_pom_short_pause
    + - i_pom_long_pause
    + - i_pom_away
    + - i_pom_pair_programming
    + - i_pom_internal_interruption
    + - i_pom_external_interruption
    + - i_custom_folder_npm
    + - i_custom_folder_git i_custom_folder_git_branch_custom_folder_git
    + - i_custom_folder_config
    + - i_custom_folder_github
    + - i_custom_folder_open
    + - i_custom_folder
    + - i_seti_stylus
    + - i_seti_project
    + - i_seti_play_arrow
    + - i_seti_sass
    + - i_seti_rails
    + - i_seti_ruby
    + - i_seti_python
    + - i_seti_heroku
    + - i_seti_php
    + - i_seti_markdown
    + - i_seti_license
    + - i_seti_json i_seti_less_seti_json
    + - i_seti_javascript
    + - i_seti_image
    + - i_seti_html
    + - i_seti_mustache
    + - i_seti_gulp
    + - i_seti_grunt
    + - i_seti_default i_seti_text_seti_default
    + - i_seti_folder
    + - i_seti_css
    + - i_seti_config
    + - i_seti_npm
    + - i_seti_home
    + - i_seti_ejs
    + - i_seti_xml
    + - i_seti_bower
    + - i_seti_coffee i_seti_cjsx_seti_coffee
    + - i_seti_twig
    + - i_custom_cpp
    + - i_custom_c
    + - i_seti_haskell
    + - i_seti_lua
    + - i_indent_line i_indentation_line_indent_line i_indent_dotted_guide_indent_line
    + - i_seti_karma
    + - i_seti_favicon
    + - i_seti_julia
    + - i_seti_react
    + - i_custom_go
    + - i_seti_go
    + - i_seti_typescript
    + - i_custom_msdos
    + - i_custom_windows
    + - i_custom_vim
    + - i_custom_elm
    + - i_custom_elixir
    + - i_custom_electron
    + - i_weather_day_cloudy_gusts
    + - i_weather_day_cloudy_windy
    + - i_weather_day_cloudy
    + - i_weather_day_fog
    + - i_weather_day_hail
    + - i_weather_day_lightning
    + - i_weather_day_rain_mix
    + - i_weather_day_rain_wind
    + - i_weather_day_rain
    + - i_weather_day_showers
    + - i_weather_day_snow
    + - i_weather_day_sprinkle
    + - i_weather_day_sunny_overcast
    + - i_weather_day_sunny
    + - i_weather_day_storm_showers
    + - i_weather_day_thunderstorm
    + - i_weather_cloudy_gusts
    + - i_weather_cloudy_windy
    + - i_weather_cloudy
    + - i_weather_fog
    + - i_weather_hail
    + - i_weather_lightning
    + - i_weather_rain_mix
    + - i_weather_rain_wind
    + - i_weather_rain
    + - i_weather_showers
    + - i_weather_snow
    + - i_weather_sprinkle
    + - i_weather_storm_showers
    + - i_weather_thunderstorm
    + - i_weather_windy
    + - i_weather_night_alt_cloudy_gusts
    + - i_weather_night_alt_cloudy_windy
    + - i_weather_night_alt_hail
    + - i_weather_night_alt_lightning
    + - i_weather_night_alt_rain_mix
    + - i_weather_night_alt_rain_wind
    + - i_weather_night_alt_rain
    + - i_weather_night_alt_rain_mix
    + - i_weather_night_alt_snow
    + - i_weather_night_alt_sprinkle
    + - i_weather_night_alt_storm_showers
    + - i_weather_night_alt_thunderstorm
    + - i_weather_night_clear
    + - i_weather_night_cloudy_gusts
    + - i_weather_night_cloudy_windy
    + - i_weather_night_cloudy
    + - i_weather_night_hail
    + - i_weather_night_lightning
    + - i_weather_night_rain_mix
    + - i_weather_night_rain_wind
    + - i_weather_night_rain
    + - i_weather_night_showers
    + - i_weather_night_snow
    + - i_weather_night_sprinkle
    + - i_weather_night_storm_showers
    + - i_weather_night_thunderstorm
    + - i_weather_celsius
    + - i_weather_cloud_down
    + - i_weather_cloud_refresh
    + - i_weather_cloud_up
    + - i_weather_cloud
    + - i_weather_degrees
    + - i_weather_direction_down_left
    + - i_weather_direction_down
    + - i_weather_fahrenheit
    + - i_weather_horizon_alt
    + - i_weather_horizon
    + - i_weather_direction_left
    + - i_weather_aliens
    + - i_weather_night_fog
    + - i_weather_refresh_alt
    + - i_weather_refresh
    + - i_weather_direction_right
    + - i_weather_raindrops
    + - i_weather_strong_wind
    + - i_weather_sunrise
    + - i_weather_sunset
    + - i_weather_thermometer_exterior
    + - i_weather_thermometer_internal
    + - i_weather_thermometer
    + - i_weather_tornado
    + - i_weather_direction_up_right
    + - i_weather_direction_up
    + - i_weather_wind_west
    + - i_weather_wind_south_west
    + - i_weather_wind_south_east
    + - i_weather_wind_south
    + - i_weather_wind_north_west
    + - i_weather_wind_north_east
    + - i_weather_wind_north
    + - i_weather_wind_east
    + - i_weather_smoke
    + - i_weather_dust
    + - i_weather_snow_wind
    + - i_weather_day_snow_wind
    + - i_weather_night_snow_wind
    + - i_weather_night_alt_snow_wind
    + - i_weather_day_sleet_storm
    + - i_weather_night_sleet_storm
    + - i_weather_night_alt_sleet_storm
    + - i_weather_day_snow_thunderstorm
    + - i_weather_night_snow_thunderstorm
    + - i_weather_night_alt_snow_thunderstorm
    + - i_weather_solar_eclipse
    + - i_weather_lunar_eclipse
    + - i_weather_meteor
    + - i_weather_hot
    + - i_weather_hurricane
    + - i_weather_smog
    + - i_weather_alien
    + - i_weather_snowflake_cold
    + - i_weather_stars
    + - i_weather_raindrop
    + - i_weather_barometer
    + - i_weather_humidity
    + - i_weather_na
    + - i_weather_flood
    + - i_weather_day_cloudy_high
    + - i_weather_night_alt_cloudy_high
    + - i_weather_night_cloudy_high
    + - i_weather_night_alt_partly_cloudy
    + - i_weather_sandstorm
    + - i_weather_night_partly_cloudy
    + - i_weather_umbrella
    + - i_weather_day_windy
    + - i_weather_night_alt_cloudy
    + - i_weather_direction_up_left
    + - i_weather_direction_down_right
    + - i_weather_time_12
    + - i_weather_time_1
    + - i_weather_time_2
    + - i_weather_time_3
    + - i_weather_time_4
    + - i_weather_time_5
    + - i_weather_time_6
    + - i_weather_time_7
    + - i_weather_time_8
    + - i_weather_time_9
    + - i_weather_time_10
    + - i_weather_time_11
    + - i_weather_moon_new
    + - i_weather_moon_waxing_crescent_1
    + - i_weather_moon_waxing_crescent_2
    + - i_weather_moon_waxing_crescent_3
    + - i_weather_moon_waxing_crescent_4
    + - i_weather_moon_waxing_crescent_5
    + - i_weather_moon_waxing_crescent_6
    + - i_weather_moon_first_quarter
    + - i_weather_moon_waxing_gibbous_1
    + - i_weather_moon_waxing_gibbous_2
    + - i_weather_moon_waxing_gibbous_3
    + - i_weather_moon_waxing_gibbous_4
    + - i_weather_moon_waxing_gibbous_5
    + - i_weather_moon_waxing_gibbous_6
    + - i_weather_moon_full
    + - i_weather_moon_waning_gibbous_1
    + - i_weather_moon_waning_gibbous_2
    + - i_weather_moon_waning_gibbous_3
    + - i_weather_moon_waning_gibbous_4
    + - i_weather_moon_waning_gibbous_5
    + - i_weather_moon_waning_gibbous_6
    + - i_weather_moon_third_quarter
    + - i_weather_moon_waning_crescent_1
    + - i_weather_moon_waning_crescent_2
    + - i_weather_moon_waning_crescent_3
    + - i_weather_moon_waning_crescent_4
    + - i_weather_moon_waning_crescent_5
    + - i_weather_moon_waning_crescent_6
    + - i_weather_wind_direction
    + - i_weather_day_sleet
    + - i_weather_night_sleet
    + - i_weather_night_alt_sleet
    + - i_weather_sleet
    + - i_weather_day_haze
    + - i_weather_wind_beaufort_0
    + - i_weather_wind_beaufort_1
    + - i_weather_wind_beaufort_2
    + - i_weather_wind_beaufort_3
    + - i_weather_wind_beaufort_4
    + - i_weather_wind_beaufort_5
    + - i_weather_wind_beaufort_6
    + - i_weather_wind_beaufort_7
    + - i_weather_wind_beaufort_8
    + - i_weather_wind_beaufort_9
    + - i_weather_wind_beaufort_10
    + - i_weather_wind_beaufort_11
    + - i_weather_wind_beaufort_12
    + - i_weather_day_light_wind
    + - i_weather_tsunami
    + - i_weather_earthquake
    + - i_weather_fire
    + - i_weather_volcano
    + - i_weather_moonrise
    + - i_weather_moonset
    + - i_weather_train
    + - i_weather_small_craft_advisory
    + - i_weather_gale_warning
    + - i_weather_storm_warning
    + - i_weather_hurricane_warning
    + - i_weather_moon_alt_waxing_crescent_1
    + - i_weather_moon_alt_waxing_crescent_2
    + - i_weather_moon_alt_waxing_crescent_3
    + - i_weather_moon_alt_waxing_crescent_4
    + - i_weather_moon_alt_waxing_crescent_5
    + - i_weather_moon_alt_waxing_crescent_6
    + - i_weather_moon_alt_first_quarter
    + - i_weather_moon_alt_waxing_gibbous_1
    + - i_weather_moon_alt_waxing_gibbous_2
    + - i_weather_moon_alt_waxing_gibbous_3
    + - i_weather_moon_alt_waxing_gibbous_4
    + - i_weather_moon_alt_waxing_gibbous_5
    + - i_weather_moon_alt_waxing_gibbous_6
    + - i_weather_moon_alt_full
    + - i_weather_moon_alt_waning_gibbous_1
    + - i_weather_moon_alt_waning_gibbous_2
    + - i_weather_moon_alt_waning_gibbous_3
    + - i_weather_moon_alt_waning_gibbous_4
    + - i_weather_moon_alt_waning_gibbous_5
    + - i_weather_moon_alt_waning_gibbous_6
    + - i_weather_moon_alt_third_quarter
    + - i_weather_moon_alt_waning_crescent_1
    + - i_weather_moon_alt_waning_crescent_2
    + - i_weather_moon_alt_waning_crescent_3
    + - i_weather_moon_alt_waning_crescent_4
    + - i_weather_moon_alt_waning_crescent_5
    + - i_weather_moon_alt_waning_crescent_6
    + - i_weather_moon_alt_new
     
    @@ -1535,1388 +3735,1389 @@

    Emojis

    -
    😃 grinning face with big eyes; U+1F603
    -😄 grinning face with smiling eyes; U+1F604
    -😁 beaming face with smiling eyes; U+1F601
    -😆 grinning squinting face; U+1F606
    -😅 grinning face with sweat; U+1F605
    -🤣 rolling on the floor laughing; U+1F923
    -😂 face with tears of joy; U+1F602
    -🙂 slightly smiling face; U+1F642
    -🙃 upside-down face; U+1F643
    -😉 winking face; U+1F609
    -😊 smiling face with smiling eyes; U+1F60A
    -😇 smiling face with halo; U+1F607
    -🥰 smiling face with 3 hearts; U+1F970
    -😍 smiling face with heart-eyes; U+1F60D
    -🤩 star-struck; U+1F929
    -😘 face blowing a kiss; U+1F618
    -😗 kissing face; U+1F617
    -☺ smiling face; U+263A
    -😚 kissing face with closed eyes; U+1F61A
    -😙 kissing face with smiling eyes; U+1F619
    -😋 face savoring food; U+1F60B
    -😛 face with tongue; U+1F61B
    -😜 winking face with tongue; U+1F61C
    -🤪 zany face; U+1F92A
    -😝 squinting face with tongue; U+1F61D
    -🤑 money-mouth face; U+1F911
    -🤗 hugging face; U+1F917
    -🤭 face with hand over mouth; U+1F92D
    -🤫 shushing face; U+1F92B
    -🤔 thinking face; U+1F914
    -🤐 zipper-mouth face; U+1F910
    -🤨 face with raised eyebrow; U+1F928
    -😐 neutral face; U+1F610
    -😑 expressionless face; U+1F611
    -😶 face without mouth; U+1F636
    -😏 smirking face; U+1F60F
    -😒 unamused face; U+1F612
    -🙄 face with rolling eyes; U+1F644
    -😬 grimacing face; U+1F62C
    -🤥 lying face; U+1F925
    -😌 relieved face; U+1F60C
    -😔 pensive face; U+1F614
    -😪 sleepy face; U+1F62A
    -🤤 drooling face; U+1F924
    -😴 sleeping face; U+1F634
    -😷 face with medical mask; U+1F637
    -🤒 face with thermometer; U+1F912
    -🤕 face with head-bandage; U+1F915
    -🤢 nauseated face; U+1F922
    -🤮 face vomiting; U+1F92E
    -🤧 sneezing face; U+1F927
    -🥵 hot face; U+1F975
    -🥶 cold face; U+1F976
    -🥴 woozy face; U+1F974
    -😵 dizzy face; U+1F635
    -🤯 exploding head; U+1F92F
    -🤠 cowboy hat face; U+1F920
    -🥳 partying face; U+1F973
    -😎 smiling face with sunglasses; U+1F60E
    -🤓 nerd face; U+1F913
    -🧐 face with monocle; U+1F9D0
    -😕 confused face; U+1F615
    -😟 worried face; U+1F61F
    -🙁 slightly frowning face; U+1F641
    -☹ frowning face; U+2639
    -😮 face with open mouth; U+1F62E
    -😯 hushed face; U+1F62F
    -😲 astonished face; U+1F632
    -😳 flushed face; U+1F633
    -🥺 pleading face; U+1F97A
    -😦 frowning face with open mouth; U+1F626
    -😧 anguished face; U+1F627
    -😨 fearful face; U+1F628
    -😰 anxious face with sweat; U+1F630
    -😥 sad but relieved face; U+1F625
    -😢 crying face; U+1F622
    -😭 loudly crying face; U+1F62D
    -😱 face screaming in fear; U+1F631
    -😖 confounded face; U+1F616
    -😣 persevering face; U+1F623
    -😞 disappointed face; U+1F61E
    -😓 downcast face with sweat; U+1F613
    -😩 weary face; U+1F629
    -😫 tired face; U+1F62B
    -😤 face with steam from nose; U+1F624
    -😡 pouting face; U+1F621
    -😠 angry face; U+1F620
    -🤬 face with symbols on mouth; U+1F92C
    -😈 smiling face with horns; U+1F608
    -👿 angry face with horns; U+1F47F
    -💀 skull; U+1F480
    -☠ skull and crossbones; U+2620
    -💩 pile of poo; U+1F4A9
    -🤡 clown face; U+1F921
    -👹 ogre; U+1F479
    -👺 goblin; U+1F47A
    -👻 ghost; U+1F47B
    -👽 alien; U+1F47D
    -👾 alien monster; U+1F47E
    -🤖 robot face; U+1F916
    -😺 grinning cat face; U+1F63A
    -😸 grinning cat face with smiling eyes; U+1F638
    -😹 cat face with tears of joy; U+1F639
    -😻 smiling cat face with heart-eyes; U+1F63B
    -😼 cat face with wry smile; U+1F63C
    -😽 kissing cat face; U+1F63D
    -🙀 weary cat face; U+1F640
    -😿 crying cat face; U+1F63F
    -😾 pouting cat face; U+1F63E
    -🙈 see-no-evil monkey; U+1F648
    -🙉 hear-no-evil monkey; U+1F649
    -🙊 speak-no-evil monkey; U+1F64A
    -💋 kiss mark; U+1F48B
    -💌 love letter; U+1F48C
    -💘 heart with arrow; U+1F498
    -💝 heart with ribbon; U+1F49D
    -💖 sparkling heart; U+1F496
    -💗 growing heart; U+1F497
    -💓 beating heart; U+1F493
    -💞 revolving hearts; U+1F49E
    -💕 two hearts; U+1F495
    -💟 heart decoration; U+1F49F
    -❣ heavy heart exclamation; U+2763
    -💔 broken heart; U+1F494
    -❤ red heart; U+2764
    -🧡 orange heart; U+1F9E1
    -💛 yellow heart; U+1F49B
    -💚 green heart; U+1F49A
    -💙 blue heart; U+1F499
    -💜 purple heart; U+1F49C
    -🖤 black heart; U+1F5A4
    -💯 hundred points; U+1F4AF
    -💢 anger symbol; U+1F4A2
    -💥 collision; U+1F4A5
    -💫 dizzy; U+1F4AB
    -💦 sweat droplets; U+1F4A6
    -💨 dashing away; U+1F4A8
    -🕳 hole; U+1F573
    -💣 bomb; U+1F4A3
    -💬 speech balloon; U+1F4AC
    -👁️‍🗨️ eye in speech bubble; U+1F441 U+FE0F U+200D U+1F5E8 U+FE0F
    -🗨 left speech bubble; U+1F5E8
    -🗯 right anger bubble; U+1F5EF
    -💭 thought balloon; U+1F4AD
    -💤 zzz; U+1F4A4
    -👋 waving hand; U+1F44B
    -🤚 raised back of hand; U+1F91A
    -🖐 hand with fingers splayed; U+1F590
    -✋ raised hand; U+270B
    -🖖 vulcan salute; U+1F596
    -👌 OK hand; U+1F44C
    -✌ victory hand; U+270C
    -🤞 crossed fingers; U+1F91E
    -🤟 love-you gesture; U+1F91F
    -🤘 sign of the horns; U+1F918
    -🤙 call me hand; U+1F919
    -👈 backhand index pointing left; U+1F448
    -👉 backhand index pointing right; U+1F449
    -👆 backhand index pointing up; U+1F446
    -🖕 middle finger; U+1F595
    -👇 backhand index pointing down; U+1F447
    -☝ index pointing up; U+261D
    -👍 thumbs up; U+1F44D
    -👎 thumbs down; U+1F44E
    -✊ raised fist; U+270A
    -👊 oncoming fist; U+1F44A
    -🤛 left-facing fist; U+1F91B
    -🤜 right-facing fist; U+1F91C
    -👏 clapping hands; U+1F44F
    -🙌 raising hands; U+1F64C
    -👐 open hands; U+1F450
    -🤲 palms up together; U+1F932
    -🤝 handshake; U+1F91D
    -🙏 folded hands; U+1F64F
    -✍ writing hand; U+270D
    -💅 nail polish; U+1F485
    -🤳 selfie; U+1F933
    -💪 flexed biceps; U+1F4AA
    -🦵 leg; U+1F9B5
    -🦶 foot; U+1F9B6
    -👂 ear; U+1F442
    -👃 nose; U+1F443
    -🧠 brain; U+1F9E0
    -🦷 tooth; U+1F9B7
    -🦴 bone; U+1F9B4
    -👀 eyes; U+1F440
    -👁 eye; U+1F441
    -👅 tongue; U+1F445
    -👄 mouth; U+1F444
    -👶 baby; U+1F476
    -🧒 child; U+1F9D2
    -👦 boy; U+1F466
    -👧 girl; U+1F467
    -🧑 person; U+1F9D1
    -👱 person: blond hair; U+1F471
    -👨 man; U+1F468
    -👱‍♂️ man: blond hair; U+1F471 U+200D U+2642 U+FE0F
    -👨‍🦰 man: red hair; U+1F468 U+200D U+1F9B0
    -👨‍🦱 man: curly hair; U+1F468 U+200D U+1F9B1
    -👨‍🦳 man: white hair; U+1F468 U+200D U+1F9B3
    -👨‍🦲 man: bald; U+1F468 U+200D U+1F9B2
    -🧔 man: beard; U+1F9D4
    -👩 woman; U+1F469
    -👱‍♀️ woman: blond hair; U+1F471 U+200D U+2640 U+FE0F
    -👩‍🦰 woman: red hair; U+1F469 U+200D U+1F9B0
    -👩‍🦱 woman: curly hair; U+1F469 U+200D U+1F9B1
    -👩‍🦳 woman: white hair; U+1F469 U+200D U+1F9B3
    -👩‍🦲 woman: bald; U+1F469 U+200D U+1F9B2
    -🧓 older person; U+1F9D3
    -👴 old man; U+1F474
    -👵 old woman; U+1F475
    -🙍 person frowning; U+1F64D
    -🙍‍♂️ man frowning; U+1F64D U+200D U+2642 U+FE0F
    -🙍‍♀️ woman frowning; U+1F64D U+200D U+2640 U+FE0F
    -🙎 person pouting; U+1F64E
    -🙎‍♂️ man pouting; U+1F64E U+200D U+2642 U+FE0F
    -🙎‍♀️ woman pouting; U+1F64E U+200D U+2640 U+FE0F
    -🙅 person gesturing NO; U+1F645
    -🙅‍♂️ man gesturing NO; U+1F645 U+200D U+2642 U+FE0F
    -🙅‍♀️ woman gesturing NO; U+1F645 U+200D U+2640 U+FE0F
    -🙆 person gesturing OK; U+1F646
    -🙆‍♂️ man gesturing OK; U+1F646 U+200D U+2642 U+FE0F
    -🙆‍♀️ woman gesturing OK; U+1F646 U+200D U+2640 U+FE0F
    -💁 person tipping hand; U+1F481
    -💁‍♂️ man tipping hand; U+1F481 U+200D U+2642 U+FE0F
    -💁‍♀️ woman tipping hand; U+1F481 U+200D U+2640 U+FE0F
    -🙋 person raising hand; U+1F64B
    -🙋‍♂️ man raising hand; U+1F64B U+200D U+2642 U+FE0F
    -🙋‍♀️ woman raising hand; U+1F64B U+200D U+2640 U+FE0F
    -🙇 person bowing; U+1F647
    -🙇‍♂️ man bowing; U+1F647 U+200D U+2642 U+FE0F
    -🙇‍♀️ woman bowing; U+1F647 U+200D U+2640 U+FE0F
    -🤦 person facepalming; U+1F926
    -🤦‍♂️ man facepalming; U+1F926 U+200D U+2642 U+FE0F
    -🤦‍♀️ woman facepalming; U+1F926 U+200D U+2640 U+FE0F
    -🤷 person shrugging; U+1F937
    -🤷‍♂️ man shrugging; U+1F937 U+200D U+2642 U+FE0F
    -🤷‍♀️ woman shrugging; U+1F937 U+200D U+2640 U+FE0F
    -👨‍⚕️ man health worker; U+1F468 U+200D U+2695 U+FE0F
    -👩‍⚕️ woman health worker; U+1F469 U+200D U+2695 U+FE0F
    -👨‍🎓 man student; U+1F468 U+200D U+1F393
    -👩‍🎓 woman student; U+1F469 U+200D U+1F393
    -👨‍🏫 man teacher; U+1F468 U+200D U+1F3EB
    -👩‍🏫 woman teacher; U+1F469 U+200D U+1F3EB
    -👨‍⚖️ man judge; U+1F468 U+200D U+2696 U+FE0F
    -👩‍⚖️ woman judge; U+1F469 U+200D U+2696 U+FE0F
    -👨‍🌾 man farmer; U+1F468 U+200D U+1F33E
    -👩‍🌾 woman farmer; U+1F469 U+200D U+1F33E
    -👨‍🍳 man cook; U+1F468 U+200D U+1F373
    -👩‍🍳 woman cook; U+1F469 U+200D U+1F373
    -👨‍🔧 man mechanic; U+1F468 U+200D U+1F527
    -👩‍🔧 woman mechanic; U+1F469 U+200D U+1F527
    -👨‍🏭 man factory worker; U+1F468 U+200D U+1F3ED
    -👩‍🏭 woman factory worker; U+1F469 U+200D U+1F3ED
    -👨‍💼 man office worker; U+1F468 U+200D U+1F4BC
    -👩‍💼 woman office worker; U+1F469 U+200D U+1F4BC
    -👨‍🔬 man scientist; U+1F468 U+200D U+1F52C
    -👩‍🔬 woman scientist; U+1F469 U+200D U+1F52C
    -👨‍💻 man technologist; U+1F468 U+200D U+1F4BB
    -👩‍💻 woman technologist; U+1F469 U+200D U+1F4BB
    -👨‍🎤 man singer; U+1F468 U+200D U+1F3A4
    -👩‍🎤 woman singer; U+1F469 U+200D U+1F3A4
    -👨‍🎨 man artist; U+1F468 U+200D U+1F3A8
    -👩‍🎨 woman artist; U+1F469 U+200D U+1F3A8
    -👨‍✈️ man pilot; U+1F468 U+200D U+2708 U+FE0F
    -👩‍✈️ woman pilot; U+1F469 U+200D U+2708 U+FE0F
    -👨‍🚀 man astronaut; U+1F468 U+200D U+1F680
    -👩‍🚀 woman astronaut; U+1F469 U+200D U+1F680
    -👨‍🚒 man firefighter; U+1F468 U+200D U+1F692
    -👩‍🚒 woman firefighter; U+1F469 U+200D U+1F692
    -👮 police officer; U+1F46E
    -👮‍♂️ man police officer; U+1F46E U+200D U+2642 U+FE0F
    -👮‍♀️ woman police officer; U+1F46E U+200D U+2640 U+FE0F
    -🕵 detective; U+1F575
    -🕵️‍♂️ man detective; U+1F575 U+FE0F U+200D U+2642 U+FE0F
    -🕵️‍♀️ woman detective; U+1F575 U+FE0F U+200D U+2640 U+FE0F
    -💂 guard; U+1F482
    -💂‍♂️ man guard; U+1F482 U+200D U+2642 U+FE0F
    -💂‍♀️ woman guard; U+1F482 U+200D U+2640 U+FE0F
    -👷 construction worker; U+1F477
    -👷‍♂️ man construction worker; U+1F477 U+200D U+2642 U+FE0F
    -👷‍♀️ woman construction worker; U+1F477 U+200D U+2640 U+FE0F
    -🤴 prince; U+1F934
    -👸 princess; U+1F478
    -👳 person wearing turban; U+1F473
    -👳‍♂️ man wearing turban; U+1F473 U+200D U+2642 U+FE0F
    -👳‍♀️ woman wearing turban; U+1F473 U+200D U+2640 U+FE0F
    -👲 man with Chinese cap; U+1F472
    -🧕 woman with headscarf; U+1F9D5
    -🤵 man in tuxedo; U+1F935
    -👰 bride with veil; U+1F470
    -🤰 pregnant woman; U+1F930
    -🤱 breast-feeding; U+1F931
    -👼 baby angel; U+1F47C
    -🎅 Santa Claus; U+1F385
    -🤶 Mrs. Claus; U+1F936
    -🦸 superhero; U+1F9B8
    -🦸‍♂️ man superhero; U+1F9B8 U+200D U+2642 U+FE0F
    -🦸‍♀️ woman superhero; U+1F9B8 U+200D U+2640 U+FE0F
    -🦹 supervillain; U+1F9B9
    -🦹‍♂️ man supervillain; U+1F9B9 U+200D U+2642 U+FE0F
    -🦹‍♀️ woman supervillain; U+1F9B9 U+200D U+2640 U+FE0F
    -🧙 mage; U+1F9D9
    -🧙‍♂️ man mage; U+1F9D9 U+200D U+2642 U+FE0F
    -🧙‍♀️ woman mage; U+1F9D9 U+200D U+2640 U+FE0F
    -🧚 fairy; U+1F9DA
    -🧚‍♂️ man fairy; U+1F9DA U+200D U+2642 U+FE0F
    -🧚‍♀️ woman fairy; U+1F9DA U+200D U+2640 U+FE0F
    -🧛 vampire; U+1F9DB
    -🧛‍♂️ man vampire; U+1F9DB U+200D U+2642 U+FE0F
    -🧛‍♀️ woman vampire; U+1F9DB U+200D U+2640 U+FE0F
    -🧜 merperson; U+1F9DC
    -🧜‍♂️ merman; U+1F9DC U+200D U+2642 U+FE0F
    -🧜‍♀️ mermaid; U+1F9DC U+200D U+2640 U+FE0F
    -🧝 elf; U+1F9DD
    -🧝‍♂️ man elf; U+1F9DD U+200D U+2642 U+FE0F
    -🧝‍♀️ woman elf; U+1F9DD U+200D U+2640 U+FE0F
    -🧞 genie; U+1F9DE
    -🧞‍♂️ man genie; U+1F9DE U+200D U+2642 U+FE0F
    -🧞‍♀️ woman genie; U+1F9DE U+200D U+2640 U+FE0F
    -🧟 zombie; U+1F9DF
    -🧟‍♂️ man zombie; U+1F9DF U+200D U+2642 U+FE0F
    -🧟‍♀️ woman zombie; U+1F9DF U+200D U+2640 U+FE0F
    -💆 person getting massage; U+1F486
    -💆‍♂️ man getting massage; U+1F486 U+200D U+2642 U+FE0F
    -💆‍♀️ woman getting massage; U+1F486 U+200D U+2640 U+FE0F
    -💇 person getting haircut; U+1F487
    -💇‍♂️ man getting haircut; U+1F487 U+200D U+2642 U+FE0F
    -💇‍♀️ woman getting haircut; U+1F487 U+200D U+2640 U+FE0F
    -🚶 person walking; U+1F6B6
    -🚶‍♂️ man walking; U+1F6B6 U+200D U+2642 U+FE0F
    -🚶‍♀️ woman walking; U+1F6B6 U+200D U+2640 U+FE0F
    -🏃 person running; U+1F3C3
    -🏃‍♂️ man running; U+1F3C3 U+200D U+2642 U+FE0F
    -🏃‍♀️ woman running; U+1F3C3 U+200D U+2640 U+FE0F
    -💃 woman dancing; U+1F483
    -🕺 man dancing; U+1F57A
    -🕴 man in suit levitating; U+1F574
    -👯 people with bunny ears; U+1F46F
    -👯‍♂️ men with bunny ears; U+1F46F U+200D U+2642 U+FE0F
    -👯‍♀️ women with bunny ears; U+1F46F U+200D U+2640 U+FE0F
    -🧖 person in steamy room; U+1F9D6
    -🧖‍♂️ man in steamy room; U+1F9D6 U+200D U+2642 U+FE0F
    -🧖‍♀️ woman in steamy room; U+1F9D6 U+200D U+2640 U+FE0F
    -🧗 person climbing; U+1F9D7
    -🧗‍♂️ man climbing; U+1F9D7 U+200D U+2642 U+FE0F
    -🧗‍♀️ woman climbing; U+1F9D7 U+200D U+2640 U+FE0F
    -🤺 person fencing; U+1F93A
    -🏇 horse racing; U+1F3C7
    -⛷ skier; U+26F7
    -🏂 snowboarder; U+1F3C2
    -🏌 person golfing; U+1F3CC
    -🏌️‍♂️ man golfing; U+1F3CC U+FE0F U+200D U+2642 U+FE0F
    -🏌️‍♀️ woman golfing; U+1F3CC U+FE0F U+200D U+2640 U+FE0F
    -🏄 person surfing; U+1F3C4
    -🏄‍♂️ man surfing; U+1F3C4 U+200D U+2642 U+FE0F
    -🏄‍♀️ woman surfing; U+1F3C4 U+200D U+2640 U+FE0F
    -🚣 person rowing boat; U+1F6A3
    -🚣‍♂️ man rowing boat; U+1F6A3 U+200D U+2642 U+FE0F
    -🚣‍♀️ woman rowing boat; U+1F6A3 U+200D U+2640 U+FE0F
    -🏊 person swimming; U+1F3CA
    -🏊‍♂️ man swimming; U+1F3CA U+200D U+2642 U+FE0F
    -🏊‍♀️ woman swimming; U+1F3CA U+200D U+2640 U+FE0F
    -⛹ person bouncing ball; U+26F9
    -⛹️‍♂️ man bouncing ball; U+26F9 U+FE0F U+200D U+2642 U+FE0F
    -⛹️‍♀️ woman bouncing ball; U+26F9 U+FE0F U+200D U+2640 U+FE0F
    -🏋 person lifting weights; U+1F3CB
    -🏋️‍♂️ man lifting weights; U+1F3CB U+FE0F U+200D U+2642 U+FE0F
    -🏋️‍♀️ woman lifting weights; U+1F3CB U+FE0F U+200D U+2640 U+FE0F
    -🚴 person biking; U+1F6B4
    -🚴‍♂️ man biking; U+1F6B4 U+200D U+2642 U+FE0F
    -🚴‍♀️ woman biking; U+1F6B4 U+200D U+2640 U+FE0F
    -🚵 person mountain biking; U+1F6B5
    -🚵‍♂️ man mountain biking; U+1F6B5 U+200D U+2642 U+FE0F
    -🚵‍♀️ woman mountain biking; U+1F6B5 U+200D U+2640 U+FE0F
    -🤸 person cartwheeling; U+1F938
    -🤸‍♂️ man cartwheeling; U+1F938 U+200D U+2642 U+FE0F
    -🤸‍♀️ woman cartwheeling; U+1F938 U+200D U+2640 U+FE0F
    -🤼 people wrestling; U+1F93C
    -🤼‍♂️ men wrestling; U+1F93C U+200D U+2642 U+FE0F
    -🤼‍♀️ women wrestling; U+1F93C U+200D U+2640 U+FE0F
    -🤽 person playing water polo; U+1F93D
    -🤽‍♂️ man playing water polo; U+1F93D U+200D U+2642 U+FE0F
    -🤽‍♀️ woman playing water polo; U+1F93D U+200D U+2640 U+FE0F
    -🤾 person playing handball; U+1F93E
    -🤾‍♂️ man playing handball; U+1F93E U+200D U+2642 U+FE0F
    -🤾‍♀️ woman playing handball; U+1F93E U+200D U+2640 U+FE0F
    -🤹 person juggling; U+1F939
    -🤹‍♂️ man juggling; U+1F939 U+200D U+2642 U+FE0F
    -🤹‍♀️ woman juggling; U+1F939 U+200D U+2640 U+FE0F
    -🧘 person in lotus position; U+1F9D8
    -🧘‍♂️ man in lotus position; U+1F9D8 U+200D U+2642 U+FE0F
    -🧘‍♀️ woman in lotus position; U+1F9D8 U+200D U+2640 U+FE0F
    -🛀 person taking bath; U+1F6C0
    -🛌 person in bed; U+1F6CC
    -👭 women holding hands; U+1F46D
    -👫 woman and man holding hands; U+1F46B
    -👬 men holding hands; U+1F46C
    -💏 kiss; U+1F48F
    -👩‍❤️‍💋‍👨 kiss: woman, man; U+1F469 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F468
    -👨‍❤️‍💋‍👨 kiss: man, man; U+1F468 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F468
    -👩‍❤️‍💋‍👩 kiss: woman, woman; U+1F469 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F469
    -💑 couple with heart; U+1F491
    -👩‍❤️‍👨 couple with heart: woman, man; U+1F469 U+200D U+2764 U+FE0F U+200D U+1F468
    -👨‍❤️‍👨 couple with heart: man, man; U+1F468 U+200D U+2764 U+FE0F U+200D U+1F468
    -👩‍❤️‍👩 couple with heart: woman, woman; U+1F469 U+200D U+2764 U+FE0F U+200D U+1F469
    -👪 family; U+1F46A
    -👨‍👩‍👦 family: man, woman, boy; U+1F468 U+200D U+1F469 U+200D U+1F466
    -👨‍👩‍👧 family: man, woman, girl; U+1F468 U+200D U+1F469 U+200D U+1F467
    -👨‍👩‍👧‍👦 family: man, woman, girl, boy; U+1F468 U+200D U+1F469 U+200D U+1F467 U+200D U+1F466
    -👨‍👩‍👦‍👦 family: man, woman, boy, boy; U+1F468 U+200D U+1F469 U+200D U+1F466 U+200D U+1F466
    -👨‍👩‍👧‍👧 family: man, woman, girl, girl; U+1F468 U+200D U+1F469 U+200D U+1F467 U+200D U+1F467
    -👨‍👨‍👦 family: man, man, boy; U+1F468 U+200D U+1F468 U+200D U+1F466
    -👨‍👨‍👧 family: man, man, girl; U+1F468 U+200D U+1F468 U+200D U+1F467
    -👨‍👨‍👧‍👦 family: man, man, girl, boy; U+1F468 U+200D U+1F468 U+200D U+1F467 U+200D U+1F466
    -👨‍👨‍👦‍👦 family: man, man, boy, boy; U+1F468 U+200D U+1F468 U+200D U+1F466 U+200D U+1F466
    -👨‍👨‍👧‍👧 family: man, man, girl, girl; U+1F468 U+200D U+1F468 U+200D U+1F467 U+200D U+1F467
    -👩‍👩‍👦 family: woman, woman, boy; U+1F469 U+200D U+1F469 U+200D U+1F466
    -👩‍👩‍👧 family: woman, woman, girl; U+1F469 U+200D U+1F469 U+200D U+1F467
    -👩‍👩‍👧‍👦 family: woman, woman, girl, boy; U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D U+1F466
    -👩‍👩‍👦‍👦 family: woman, woman, boy, boy; U+1F469 U+200D U+1F469 U+200D U+1F466 U+200D U+1F466
    -👩‍👩‍👧‍👧 family: woman, woman, girl, girl; U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D U+1F467
    -👨‍👦 family: man, boy; U+1F468 U+200D U+1F466
    -👨‍👦‍👦 family: man, boy, boy; U+1F468 U+200D U+1F466 U+200D U+1F466
    -👨‍👧 family: man, girl; U+1F468 U+200D U+1F467
    -👨‍👧‍👦 family: man, girl, boy; U+1F468 U+200D U+1F467 U+200D U+1F466
    -👨‍👧‍👧 family: man, girl, girl; U+1F468 U+200D U+1F467 U+200D U+1F467
    -👩‍👦 family: woman, boy; U+1F469 U+200D U+1F466
    -👩‍👦‍👦 family: woman, boy, boy; U+1F469 U+200D U+1F466 U+200D U+1F466
    -👩‍👧 family: woman, girl; U+1F469 U+200D U+1F467
    -👩‍👧‍👦 family: woman, girl, boy; U+1F469 U+200D U+1F467 U+200D U+1F466
    -👩‍👧‍👧 family: woman, girl, girl; U+1F469 U+200D U+1F467 U+200D U+1F467
    -🗣 speaking head; U+1F5E3
    -👤 bust in silhouette; U+1F464
    -👥 busts in silhouette; U+1F465
    -👣 footprints; U+1F463
    -🦰 red hair; U+1F9B0
    -🦱 curly hair; U+1F9B1
    -🦳 white hair; U+1F9B3
    -🦲 bald; U+1F9B2
    -🐵 monkey face; U+1F435
    -🐒 monkey; U+1F412
    -🦍 gorilla; U+1F98D
    -🐶 dog face; U+1F436
    -🐕 dog; U+1F415
    -🐩 poodle; U+1F429
    -🐺 wolf face; U+1F43A
    -🦊 fox face; U+1F98A
    -🦝 raccoon; U+1F99D
    -🐱 cat face; U+1F431
    -🐈 cat; U+1F408
    -🦁 lion face; U+1F981
    -🐯 tiger face; U+1F42F
    -🐅 tiger; U+1F405
    -🐆 leopard; U+1F406
    -🐴 horse face; U+1F434
    -🐎 horse; U+1F40E
    -🦄 unicorn face; U+1F984
    -🦓 zebra; U+1F993
    -🦌 deer; U+1F98C
    -🐮 cow face; U+1F42E
    -🐂 ox; U+1F402
    -🐃 water buffalo; U+1F403
    -🐄 cow; U+1F404
    -🐷 pig face; U+1F437
    -🐖 pig; U+1F416
    -🐗 boar; U+1F417
    -🐽 pig nose; U+1F43D
    -🐏 ram; U+1F40F
    -🐑 ewe; U+1F411
    -🐐 goat; U+1F410
    -🐪 camel; U+1F42A
    -🐫 two-hump camel; U+1F42B
    -🦙 llama; U+1F999
    -🦒 giraffe; U+1F992
    -🐘 elephant; U+1F418
    -🦏 rhinoceros; U+1F98F
    -🦛 hippopotamus; U+1F99B
    -🐭 mouse face; U+1F42D
    -🐁 mouse; U+1F401
    -🐀 rat; U+1F400
    -🐹 hamster face; U+1F439
    -🐰 rabbit face; U+1F430
    -🐇 rabbit; U+1F407
    -🐿 chipmunk; U+1F43F
    -🦔 hedgehog; U+1F994
    -🦇 bat; U+1F987
    -🐻 bear face; U+1F43B
    -🐨 koala; U+1F428
    -🐼 panda face; U+1F43C
    -🦘 kangaroo; U+1F998
    -🦡 badger; U+1F9A1
    -🐾 paw prints; U+1F43E
    -🦃 turkey; U+1F983
    -🐔 chicken; U+1F414
    -🐓 rooster; U+1F413
    -🐣 hatching chick; U+1F423
    -🐤 baby chick; U+1F424
    -🐥 front-facing baby chick; U+1F425
    -🐦 bird; U+1F426
    -🐧 penguin; U+1F427
    -🕊 dove; U+1F54A
    -🦅 eagle; U+1F985
    -🦆 duck; U+1F986
    -🦢 swan; U+1F9A2
    -🦉 owl; U+1F989
    -🦚 peacock; U+1F99A
    -🦜 parrot; U+1F99C
    -🐸 frog face; U+1F438
    -🐊 crocodile; U+1F40A
    -🐢 turtle; U+1F422
    -🦎 lizard; U+1F98E
    -🐍 snake; U+1F40D
    -🐲 dragon face; U+1F432
    -🐉 dragon; U+1F409
    -🦕 sauropod; U+1F995
    -🦖 T-Rex; U+1F996
    -🐳 spouting whale; U+1F433
    -🐋 whale; U+1F40B
    -🐬 dolphin; U+1F42C
    -🐟 fish; U+1F41F
    -🐠 tropical fish; U+1F420
    -🐡 blowfish; U+1F421
    -🦈 shark; U+1F988
    -🐙 octopus; U+1F419
    -🐚 spiral shell; U+1F41A
    -🐌 snail; U+1F40C
    -🦋 butterfly; U+1F98B
    -🐛 bug; U+1F41B
    -🐜 ant; U+1F41C
    -🐝 honeybee; U+1F41D
    -🐞 lady beetle; U+1F41E
    -🦗 cricket; U+1F997
    -🕷 spider; U+1F577
    -🕸 spider web; U+1F578
    -🦂 scorpion; U+1F982
    -🦟 mosquito; U+1F99F
    -🦠 microbe; U+1F9A0
    -💐 bouquet; U+1F490
    -🌸 cherry blossom; U+1F338
    -💮 white flower; U+1F4AE
    -🏵 rosette; U+1F3F5
    -🌹 rose; U+1F339
    -🥀 wilted flower; U+1F940
    -🌺 hibiscus; U+1F33A
    -🌻 sunflower; U+1F33B
    -🌼 blossom; U+1F33C
    -🌷 tulip; U+1F337
    -🌱 seedling; U+1F331
    -🌲 evergreen tree; U+1F332
    -🌳 deciduous tree; U+1F333
    -🌴 palm tree; U+1F334
    -🌵 cactus; U+1F335
    -🌾 sheaf of rice; U+1F33E
    -🌿 herb; U+1F33F
    -☘ shamrock; U+2618
    -🍀 four leaf clover; U+1F340
    -🍁 maple leaf; U+1F341
    -🍂 fallen leaf; U+1F342
    -🍃 leaf fluttering in wind; U+1F343
    -🍇 grapes; U+1F347
    -🍈 melon; U+1F348
    -🍉 watermelon; U+1F349
    -🍊 tangerine; U+1F34A
    -🍋 lemon; U+1F34B
    -🍌 banana; U+1F34C
    -🍍 pineapple; U+1F34D
    -🥭 mango; U+1F96D
    -🍎 red apple; U+1F34E
    -🍏 green apple; U+1F34F
    -🍐 pear; U+1F350
    -🍑 peach; U+1F351
    -🍒 cherries; U+1F352
    -🍓 strawberry; U+1F353
    -🥝 kiwi fruit; U+1F95D
    -🍅 tomato; U+1F345
    -🥥 coconut; U+1F965
    -🥑 avocado; U+1F951
    -🍆 eggplant; U+1F346
    -🥔 potato; U+1F954
    -🥕 carrot; U+1F955
    -🌽 ear of corn; U+1F33D
    -🌶 hot pepper; U+1F336
    -🥒 cucumber; U+1F952
    -🥬 leafy green; U+1F96C
    -🥦 broccoli; U+1F966
    -🍄 mushroom; U+1F344
    -🥜 peanuts; U+1F95C
    -🌰 chestnut; U+1F330
    -🍞 bread; U+1F35E
    -🥐 croissant; U+1F950
    -🥖 baguette bread; U+1F956
    -🥨 pretzel; U+1F968
    -🥯 bagel; U+1F96F
    -🥞 pancakes; U+1F95E
    -🧀 cheese wedge; U+1F9C0
    -🍖 meat on bone; U+1F356
    -🍗 poultry leg; U+1F357
    -🥩 cut of meat; U+1F969
    -🥓 bacon; U+1F953
    -🍔 hamburger; U+1F354
    -🍟 french fries; U+1F35F
    -🍕 pizza; U+1F355
    -🌭 hot dog; U+1F32D
    -🥪 sandwich; U+1F96A
    -🌮 taco; U+1F32E
    -🌯 burrito; U+1F32F
    -🥙 stuffed flatbread; U+1F959
    -🥚 egg; U+1F95A
    -🍳 cooking; U+1F373
    -🥘 shallow pan of food; U+1F958
    -🍲 pot of food; U+1F372
    -🥣 bowl with spoon; U+1F963
    -🥗 green salad; U+1F957
    -🍿 popcorn; U+1F37F
    -🧂 salt; U+1F9C2
    -🥫 canned food; U+1F96B
    -🍱 bento box; U+1F371
    -🍘 rice cracker; U+1F358
    -🍙 rice ball; U+1F359
    -🍚 cooked rice; U+1F35A
    -🍛 curry rice; U+1F35B
    -🍜 steaming bowl; U+1F35C
    -🍝 spaghetti; U+1F35D
    -🍠 roasted sweet potato; U+1F360
    -🍢 oden; U+1F362
    -🍣 sushi; U+1F363
    -🍤 fried shrimp; U+1F364
    -🍥 fish cake with swirl; U+1F365
    -🥮 moon cake; U+1F96E
    -🍡 dango; U+1F361
    -🥟 dumpling; U+1F95F
    -🥠 fortune cookie; U+1F960
    -🥡 takeout box; U+1F961
    -🦀 crab; U+1F980
    -🦞 lobster; U+1F99E
    -🦐 shrimp; U+1F990
    -🦑 squid; U+1F991
    -🍦 soft ice cream; U+1F366
    -🍧 shaved ice; U+1F367
    -🍨 ice cream; U+1F368
    -🍩 doughnut; U+1F369
    -🍪 cookie; U+1F36A
    -🎂 birthday cake; U+1F382
    -🍰 shortcake; U+1F370
    -🧁 cupcake; U+1F9C1
    -🥧 pie; U+1F967
    -🍫 chocolate bar; U+1F36B
    -🍬 candy; U+1F36C
    -🍭 lollipop; U+1F36D
    -🍮 custard; U+1F36E
    -🍯 honey pot; U+1F36F
    -🍼 baby bottle; U+1F37C
    -🥛 glass of milk; U+1F95B
    -☕ hot beverage; U+2615
    -🍵 teacup without handle; U+1F375
    -🍶 sake; U+1F376
    -🍾 bottle with popping cork; U+1F37E
    -🍷 wine glass; U+1F377
    -🍸 cocktail glass; U+1F378
    -🍹 tropical drink; U+1F379
    -🍺 beer mug; U+1F37A
    -🍻 clinking beer mugs; U+1F37B
    -🥂 clinking glasses; U+1F942
    -🥃 tumbler glass; U+1F943
    -🥤 cup with straw; U+1F964
    -🥢 chopsticks; U+1F962
    -🍽 fork and knife with plate; U+1F37D
    -🍴 fork and knife; U+1F374
    -🥄 spoon; U+1F944
    -🔪 kitchen knife; U+1F52A
    -🏺 amphora; U+1F3FA
    -🌍 globe showing Europe-Africa; U+1F30D
    -🌎 globe showing Americas; U+1F30E
    -🌏 globe showing Asia-Australia; U+1F30F
    -🌐 globe with meridians; U+1F310
    -🗺 world map; U+1F5FA
    -🗾 map of Japan; U+1F5FE
    -🧭 compass; U+1F9ED
    -🏔 snow-capped mountain; U+1F3D4
    -⛰ mountain; U+26F0
    -🌋 volcano; U+1F30B
    -🗻 mount fuji; U+1F5FB
    -🏕 camping; U+1F3D5
    -🏖 beach with umbrella; U+1F3D6
    -🏜 desert; U+1F3DC
    -🏝 desert island; U+1F3DD
    -🏞 national park; U+1F3DE
    -🏟 stadium; U+1F3DF
    -🏛 classical building; U+1F3DB
    -🏗 building construction; U+1F3D7
    -🧱 brick; U+1F9F1
    -🏘 houses; U+1F3D8
    -🏚 derelict house; U+1F3DA
    -🏠 house; U+1F3E0
    -🏡 house with garden; U+1F3E1
    -🏢 office building; U+1F3E2
    -🏣 Japanese post office; U+1F3E3
    -🏤 post office; U+1F3E4
    -🏥 hospital; U+1F3E5
    -🏦 bank; U+1F3E6
    -🏨 hotel; U+1F3E8
    -🏩 love hotel; U+1F3E9
    -🏪 convenience store; U+1F3EA
    -🏫 school; U+1F3EB
    -🏬 department store; U+1F3EC
    -🏭 factory; U+1F3ED
    -🏯 Japanese castle; U+1F3EF
    -🏰 castle; U+1F3F0
    -💒 wedding; U+1F492
    -🗼 Tokyo tower; U+1F5FC
    -🗽 Statue of Liberty; U+1F5FD
    -⛪ church; U+26EA
    -🕌 mosque; U+1F54C
    -🕍 synagogue; U+1F54D
    -⛩ shinto shrine; U+26E9
    -🕋 kaaba; U+1F54B
    -⛲ fountain; U+26F2
    -⛺ tent; U+26FA
    -🌁 foggy; U+1F301
    -🌃 night with stars; U+1F303
    -🏙 cityscape; U+1F3D9
    -🌄 sunrise over mountains; U+1F304
    -🌅 sunrise; U+1F305
    -🌆 cityscape at dusk; U+1F306
    -🌇 sunset; U+1F307
    -🌉 bridge at night; U+1F309
    -♨ hot springs; U+2668
    -🌌 milky way; U+1F30C
    -🎠 carousel horse; U+1F3A0
    -🎡 ferris wheel; U+1F3A1
    -🎢 roller coaster; U+1F3A2
    -💈 barber pole; U+1F488
    -🎪 circus tent; U+1F3AA
    -🚂 locomotive; U+1F682
    -🚃 railway car; U+1F683
    -🚄 high-speed train; U+1F684
    -🚅 bullet train; U+1F685
    -🚆 train; U+1F686
    -🚇 metro; U+1F687
    -🚈 light rail; U+1F688
    -🚉 station; U+1F689
    -🚊 tram; U+1F68A
    -🚝 monorail; U+1F69D
    -🚞 mountain railway; U+1F69E
    -🚋 tram car; U+1F68B
    -🚌 bus; U+1F68C
    -🚍 oncoming bus; U+1F68D
    -🚎 trolleybus; U+1F68E
    -🚐 minibus; U+1F690
    -🚑 ambulance; U+1F691
    -🚒 fire engine; U+1F692
    -🚓 police car; U+1F693
    -🚔 oncoming police car; U+1F694
    -🚕 taxi; U+1F695
    -🚖 oncoming taxi; U+1F696
    -🚗 automobile; U+1F697
    -🚘 oncoming automobile; U+1F698
    -🚙 sport utility vehicle; U+1F699
    -🚚 delivery truck; U+1F69A
    -🚛 articulated lorry; U+1F69B
    -🚜 tractor; U+1F69C
    -🏎 racing car; U+1F3CE
    -🏍 motorcycle; U+1F3CD
    -🛵 motor scooter; U+1F6F5
    -🚲 bicycle; U+1F6B2
    -🛴 kick scooter; U+1F6F4
    -🛹 skateboard; U+1F6F9
    -🚏 bus stop; U+1F68F
    -🛣 motorway; U+1F6E3
    -🛤 railway track; U+1F6E4
    -🛢 oil drum; U+1F6E2
    -⛽ fuel pump; U+26FD
    -🚨 police car light; U+1F6A8
    -🚥 horizontal traffic light; U+1F6A5
    -🚦 vertical traffic light; U+1F6A6
    -🛑 stop sign; U+1F6D1
    -🚧 construction; U+1F6A7
    -⚓ anchor; U+2693
    -⛵ sailboat; U+26F5
    -🛶 canoe; U+1F6F6
    -🚤 speedboat; U+1F6A4
    -🛳 passenger ship; U+1F6F3
    -⛴ ferry; U+26F4
    -🛥 motor boat; U+1F6E5
    -🚢 ship; U+1F6A2
    -✈ airplane; U+2708
    -🛩 small airplane; U+1F6E9
    -🛫 airplane departure; U+1F6EB
    -🛬 airplane arrival; U+1F6EC
    -💺 seat; U+1F4BA
    -🚁 helicopter; U+1F681
    -🚟 suspension railway; U+1F69F
    -🚠 mountain cableway; U+1F6A0
    -🚡 aerial tramway; U+1F6A1
    -🛰 satellite; U+1F6F0
    -🚀 rocket; U+1F680
    -🛸 flying saucer; U+1F6F8
    -🛎 bellhop bell; U+1F6CE
    -🧳 luggage; U+1F9F3
    -⌛ hourglass done; U+231B
    -⏳ hourglass not done; U+23F3
    -⌚ watch; U+231A
    -⏰ alarm clock; U+23F0
    -⏱ stopwatch; U+23F1
    -⏲ timer clock; U+23F2
    -🕰 mantelpiece clock; U+1F570
    -🕛 twelve o’clock; U+1F55B
    -🕧 twelve-thirty; U+1F567
    -🕐 one o’clock; U+1F550
    -🕜 one-thirty; U+1F55C
    -🕑 two o’clock; U+1F551
    -🕝 two-thirty; U+1F55D
    -🕒 three o’clock; U+1F552
    -🕞 three-thirty; U+1F55E
    -🕓 four o’clock; U+1F553
    -🕟 four-thirty; U+1F55F
    -🕔 five o’clock; U+1F554
    -🕠 five-thirty; U+1F560
    -🕕 six o’clock; U+1F555
    -🕡 six-thirty; U+1F561
    -🕖 seven o’clock; U+1F556
    -🕢 seven-thirty; U+1F562
    -🕗 eight o’clock; U+1F557
    -🕣 eight-thirty; U+1F563
    -🕘 nine o’clock; U+1F558
    -🕤 nine-thirty; U+1F564
    -🕙 ten o’clock; U+1F559
    -🕥 ten-thirty; U+1F565
    -🕚 eleven o’clock; U+1F55A
    -🕦 eleven-thirty; U+1F566
    -🌑 new moon; U+1F311
    -🌒 waxing crescent moon; U+1F312
    -🌓 first quarter moon; U+1F313
    -🌔 waxing gibbous moon; U+1F314
    -🌕 full moon; U+1F315
    -🌖 waning gibbous moon; U+1F316
    -🌗 last quarter moon; U+1F317
    -🌘 waning crescent moon; U+1F318
    -🌙 crescent moon; U+1F319
    -🌚 new moon face; U+1F31A
    -🌛 first quarter moon face; U+1F31B
    -🌜 last quarter moon face; U+1F31C
    -🌡 thermometer; U+1F321
    -☀ sun; U+2600
    -🌝 full moon face; U+1F31D
    -🌞 sun with face; U+1F31E
    -⭐ star; U+2B50
    -🌟 glowing star; U+1F31F
    -🌠 shooting star; U+1F320
    -☁ cloud; U+2601
    -⛅ sun behind cloud; U+26C5
    -⛈ cloud with lightning and rain; U+26C8
    -🌤 sun behind small cloud; U+1F324
    -🌥 sun behind large cloud; U+1F325
    -🌦 sun behind rain cloud; U+1F326
    -🌧 cloud with rain; U+1F327
    -🌨 cloud with snow; U+1F328
    -🌩 cloud with lightning; U+1F329
    -🌪 tornado; U+1F32A
    -🌫 fog; U+1F32B
    -🌬 wind face; U+1F32C
    -🌀 cyclone; U+1F300
    -🌈 rainbow; U+1F308
    -🌂 closed umbrella; U+1F302
    -☂ umbrella; U+2602
    -☔ umbrella with rain drops; U+2614
    -⛱ umbrella on ground; U+26F1
    -⚡ high voltage; U+26A1
    -❄ snowflake; U+2744
    -☃ snowman; U+2603
    -⛄ snowman without snow; U+26C4
    -☄ comet; U+2604
    -🔥 fire; U+1F525
    -💧 droplet; U+1F4A7
    -🌊 water wave; U+1F30A
    -🎃 jack-o-lantern; U+1F383
    -🎄 Christmas tree; U+1F384
    -🎆 fireworks; U+1F386
    -🎇 sparkler; U+1F387
    -🧨 firecracker; U+1F9E8
    -✨ sparkles; U+2728
    -🎈 balloon; U+1F388
    -🎉 party popper; U+1F389
    -🎊 confetti ball; U+1F38A
    -🎋 tanabata tree; U+1F38B
    -🎍 pine decoration; U+1F38D
    -🎎 Japanese dolls; U+1F38E
    -🎏 carp streamer; U+1F38F
    -🎐 wind chime; U+1F390
    -🎑 moon viewing ceremony; U+1F391
    -🧧 red envelope; U+1F9E7
    -🎀 ribbon; U+1F380
    -🎁 wrapped gift; U+1F381
    -🎗 reminder ribbon; U+1F397
    -🎟 admission tickets; U+1F39F
    -🎫 ticket; U+1F3AB
    -🎖 military medal; U+1F396
    -🏆 trophy; U+1F3C6
    -🏅 sports medal; U+1F3C5
    -1st place medal; U+1F947 🥇
    -2nd place medal; U+1F948 🥈
    -3rd place medal; U+1F949 🥉
    -⚽ soccer ball; U+26BD
    -⚾ baseball; U+26BE
    -🥎 softball; U+1F94E
    -🏀 basketball; U+1F3C0
    -🏐 volleyball; U+1F3D0
    -🏈 american football; U+1F3C8
    -🏉 rugby football; U+1F3C9
    -🎾 tennis; U+1F3BE
    -🥏 flying disc; U+1F94F
    -🎳 bowling; U+1F3B3
    -🏏 cricket game; U+1F3CF
    -🏑 field hockey; U+1F3D1
    -🏒 ice hockey; U+1F3D2
    -🥍 lacrosse; U+1F94D
    -🏓 ping pong; U+1F3D3
    -🏸 badminton; U+1F3F8
    -🥊 boxing glove; U+1F94A
    -🥋 martial arts uniform; U+1F94B
    -🥅 goal net; U+1F945
    -⛳ flag in hole; U+26F3
    -⛸ ice skate; U+26F8
    -🎣 fishing pole; U+1F3A3
    -🎽 running shirt; U+1F3BD
    -🎿 skis; U+1F3BF
    -🛷 sled; U+1F6F7
    -🥌 curling stone; U+1F94C
    -🎯 direct hit; U+1F3AF
    -🎱 pool 8 ball; U+1F3B1
    -🔮 crystal ball; U+1F52E
    -🧿 nazar amulet; U+1F9FF
    -🎮 video game; U+1F3AE
    -🕹 joystick; U+1F579
    -🎰 slot machine; U+1F3B0
    -🎲 game die; U+1F3B2
    -🧩 jigsaw; U+1F9E9
    -🧸 teddy bear; U+1F9F8
    -♠ spade suit; U+2660
    -♥ heart suit; U+2665
    -♦ diamond suit; U+2666
    -♣ club suit; U+2663
    -♟ chess pawn; U+265F
    -🃏 joker; U+1F0CF
    -🀄 mahjong red dragon; U+1F004
    -🎴 flower playing cards; U+1F3B4
    -🎭 performing arts; U+1F3AD
    -🖼 framed picture; U+1F5BC
    -🎨 artist palette; U+1F3A8
    -🧵 thread; U+1F9F5
    -🧶 yarn; U+1F9F6
    -👓 glasses; U+1F453
    -🕶 sunglasses; U+1F576
    -🥽 goggles; U+1F97D
    -🥼 lab coat; U+1F97C
    -👔 necktie; U+1F454
    -👕 t-shirt; U+1F455
    -👖 jeans; U+1F456
    -🧣 scarf; U+1F9E3
    -🧤 gloves; U+1F9E4
    -🧥 coat; U+1F9E5
    -🧦 socks; U+1F9E6
    -👗 dress; U+1F457
    -👘 kimono; U+1F458
    -👙 bikini; U+1F459
    -👚 woman’s clothes; U+1F45A
    -👛 purse; U+1F45B
    -👜 handbag; U+1F45C
    -👝 clutch bag; U+1F45D
    -🛍 shopping bags; U+1F6CD
    -🎒 backpack; U+1F392
    -👞 man’s shoe; U+1F45E
    -👟 running shoe; U+1F45F
    -🥾 hiking boot; U+1F97E
    -🥿 flat shoe; U+1F97F
    -👠 high-heeled shoe; U+1F460
    -👡 woman’s sandal; U+1F461
    -👢 woman’s boot; U+1F462
    -👑 crown; U+1F451
    -👒 woman’s hat; U+1F452
    -🎩 top hat; U+1F3A9
    -🎓 graduation cap; U+1F393
    -🧢 billed cap; U+1F9E2
    -⛑ rescue worker’s helmet; U+26D1
    -📿 prayer beads; U+1F4FF
    -💄 lipstick; U+1F484
    -💍 ring; U+1F48D
    -💎 gem stone; U+1F48E
    -🔇 muted speaker; U+1F507
    -🔈 speaker low volume; U+1F508
    -🔉 speaker medium volume; U+1F509
    -🔊 speaker high volume; U+1F50A
    -📢 loudspeaker; U+1F4E2
    -📣 megaphone; U+1F4E3
    -📯 postal horn; U+1F4EF
    -🔔 bell; U+1F514
    -🔕 bell with slash; U+1F515
    -🎼 musical score; U+1F3BC
    -🎵 musical note; U+1F3B5
    -🎶 musical notes; U+1F3B6
    -🎙 studio microphone; U+1F399
    -🎚 level slider; U+1F39A
    -🎛 control knobs; U+1F39B
    -🎤 microphone; U+1F3A4
    -🎧 headphone; U+1F3A7
    -📻 radio; U+1F4FB
    -🎷 saxophone; U+1F3B7
    -🎸 guitar; U+1F3B8
    -🎹 musical keyboard; U+1F3B9
    -🎺 trumpet; U+1F3BA
    -🎻 violin; U+1F3BB
    -🥁 drum; U+1F941
    -📱 mobile phone; U+1F4F1
    -📲 mobile phone with arrow; U+1F4F2
    -☎ telephone; U+260E
    -📞 telephone receiver; U+1F4DE
    -📟 pager; U+1F4DF
    -📠 fax machine; U+1F4E0
    -🔋 battery; U+1F50B
    -🔌 electric plug; U+1F50C
    -💻 laptop computer; U+1F4BB
    -🖥 desktop computer; U+1F5A5
    -🖨 printer; U+1F5A8
    -⌨ keyboard; U+2328
    -🖱 computer mouse; U+1F5B1
    -🖲 trackball; U+1F5B2
    -💽 computer disk; U+1F4BD
    -💾 floppy disk; U+1F4BE
    -💿 optical disk; U+1F4BF
    -📀 dvd; U+1F4C0
    -🧮 abacus; U+1F9EE
    -🎥 movie camera; U+1F3A5
    -🎞 film frames; U+1F39E
    -📽 film projector; U+1F4FD
    -🎬 clapper board; U+1F3AC
    -📺 television; U+1F4FA
    -📷 camera; U+1F4F7
    -📸 camera with flash; U+1F4F8
    -📹 video camera; U+1F4F9
    -📼 videocassette; U+1F4FC
    -🔍 magnifying glass tilted left; U+1F50D
    -🔎 magnifying glass tilted right; U+1F50E
    -🕯 candle; U+1F56F
    -💡 light bulb; U+1F4A1
    -🔦 flashlight; U+1F526
    -🏮 red paper lantern; U+1F3EE
    -📔 notebook with decorative cover; U+1F4D4
    -📕 closed book; U+1F4D5
    -📖 open book; U+1F4D6
    -📗 green book; U+1F4D7
    -📘 blue book; U+1F4D8
    -📙 orange book; U+1F4D9
    -📚 books; U+1F4DA
    -📓 notebook; U+1F4D3
    -📒 ledger; U+1F4D2
    -📃 page with curl; U+1F4C3
    -📜 scroll; U+1F4DC
    -📄 page facing up; U+1F4C4
    -📰 newspaper; U+1F4F0
    -🗞 rolled-up newspaper; U+1F5DE
    -📑 bookmark tabs; U+1F4D1
    -🔖 bookmark; U+1F516
    -🏷 label; U+1F3F7
    -💰 money bag; U+1F4B0
    -💴 yen banknote; U+1F4B4
    -💵 dollar banknote; U+1F4B5
    -💶 euro banknote; U+1F4B6
    -💷 pound banknote; U+1F4B7
    -💸 money with wings; U+1F4B8
    -💳 credit card; U+1F4B3
    -🧾 receipt; U+1F9FE
    -💹 chart increasing with yen; U+1F4B9
    -💱 currency exchange; U+1F4B1
    -💲 heavy dollar sign; U+1F4B2
    -✉ envelope; U+2709
    -📧 e-mail; U+1F4E7
    -📨 incoming envelope; U+1F4E8
    -📩 envelope with arrow; U+1F4E9
    -📤 outbox tray; U+1F4E4
    -📥 inbox tray; U+1F4E5
    -📦 package; U+1F4E6
    -📫 closed mailbox with raised flag; U+1F4EB
    -📪 closed mailbox with lowered flag; U+1F4EA
    -📬 open mailbox with raised flag; U+1F4EC
    -📭 open mailbox with lowered flag; U+1F4ED
    -📮 postbox; U+1F4EE
    -🗳 ballot box with ballot; U+1F5F3
    -✏ pencil; U+270F
    -✒ black nib; U+2712
    -🖋 fountain pen; U+1F58B
    -🖊 pen; U+1F58A
    -🖌 paintbrush; U+1F58C
    -🖍 crayon; U+1F58D
    -📝 memo; U+1F4DD
    -💼 briefcase; U+1F4BC
    -📁 file folder; U+1F4C1
    -📂 open file folder; U+1F4C2
    -🗂 card index dividers; U+1F5C2
    -📅 calendar; U+1F4C5
    -📆 tear-off calendar; U+1F4C6
    -🗒 spiral notepad; U+1F5D2
    -🗓 spiral calendar; U+1F5D3
    -📇 card index; U+1F4C7
    -📈 chart increasing; U+1F4C8
    -📉 chart decreasing; U+1F4C9
    -📊 bar chart; U+1F4CA
    -📋 clipboard; U+1F4CB
    -📌 pushpin; U+1F4CC
    -📍 round pushpin; U+1F4CD
    -📎 paperclip; U+1F4CE
    -🖇 linked paperclips; U+1F587
    -📏 straight ruler; U+1F4CF
    -📐 triangular ruler; U+1F4D0
    -✂ scissors; U+2702
    -🗃 card file box; U+1F5C3
    -🗄 file cabinet; U+1F5C4
    -🗑 wastebasket; U+1F5D1
    -🔒 locked; U+1F512
    -🔓 unlocked; U+1F513
    -🔏 locked with pen; U+1F50F
    -🔐 locked with key; U+1F510
    -🔑 key; U+1F511
    -🗝 old key; U+1F5DD
    -🔨 hammer; U+1F528
    -⛏ pick; U+26CF
    -⚒ hammer and pick; U+2692
    -🛠 hammer and wrench; U+1F6E0
    -🗡 dagger; U+1F5E1
    -⚔ crossed swords; U+2694
    -🔫 pistol; U+1F52B
    -🏹 bow and arrow; U+1F3F9
    -🛡 shield; U+1F6E1
    -🔧 wrench; U+1F527
    -🔩 nut and bolt; U+1F529
    -⚙ gear; U+2699
    -🗜 clamp; U+1F5DC
    -⚖ balance scale; U+2696
    -🔗 link; U+1F517
    -⛓ chains; U+26D3
    -🧰 toolbox; U+1F9F0
    -🧲 magnet; U+1F9F2
    -⚗ alembic; U+2697
    -🧪 test tube; U+1F9EA
    -🧫 petri dish; U+1F9EB
    -🧬 dna; U+1F9EC
    -🔬 microscope; U+1F52C
    -🔭 telescope; U+1F52D
    -📡 satellite antenna; U+1F4E1
    -💉 syringe; U+1F489
    -💊 pill; U+1F48A
    -🚪 door; U+1F6AA
    -🛏 bed; U+1F6CF
    -🛋 couch and lamp; U+1F6CB
    -🚽 toilet; U+1F6BD
    -🚿 shower; U+1F6BF
    -🛁 bathtub; U+1F6C1
    -🧴 lotion bottle; U+1F9F4
    -🧷 safety pin; U+1F9F7
    -🧹 broom; U+1F9F9
    -🧺 basket; U+1F9FA
    -🧻 roll of paper; U+1F9FB
    -🧼 soap; U+1F9FC
    -🧽 sponge; U+1F9FD
    -🧯 fire extinguisher; U+1F9EF
    -🛒 shopping cart; U+1F6D2
    -🚬 cigarette; U+1F6AC
    -⚰ coffin; U+26B0
    -⚱ funeral urn; U+26B1
    -🗿 moai; U+1F5FF
    -🏧 ATM sign; U+1F3E7
    -🚮 litter in bin sign; U+1F6AE
    -🚰 potable water; U+1F6B0
    -♿ wheelchair symbol; U+267F
    -🚹 men’s room; U+1F6B9
    -🚺 women’s room; U+1F6BA
    -🚻 restroom; U+1F6BB
    -🚼 baby symbol; U+1F6BC
    -🚾 water closet; U+1F6BE
    -🛂 passport control; U+1F6C2
    -🛃 customs; U+1F6C3
    -🛄 baggage claim; U+1F6C4
    -🛅 left luggage; U+1F6C5
    -⚠ warning; U+26A0
    -🚸 children crossing; U+1F6B8
    -⛔ no entry; U+26D4
    -🚫 prohibited; U+1F6AB
    -🚳 no bicycles; U+1F6B3
    -🚭 no smoking; U+1F6AD
    -🚯 no littering; U+1F6AF
    -🚱 non-potable water; U+1F6B1
    -🚷 no pedestrians; U+1F6B7
    -📵 no mobile phones; U+1F4F5
    -🔞 no one under eighteen; U+1F51E
    -☢ radioactive; U+2622
    -☣ biohazard; U+2623
    -⬆ up arrow; U+2B06
    -↗ up-right arrow; U+2197
    -➡ right arrow; U+27A1
    -↘ down-right arrow; U+2198
    -⬇ down arrow; U+2B07
    -↙ down-left arrow; U+2199
    -⬅ left arrow; U+2B05
    -↖ up-left arrow; U+2196
    -↕ up-down arrow; U+2195
    -↔ left-right arrow; U+2194
    -↩ right arrow curving left; U+21A9
    -↪ left arrow curving right; U+21AA
    -⤴ right arrow curving up; U+2934
    -⤵ right arrow curving down; U+2935
    -🔃 clockwise vertical arrows; U+1F503
    -🔄 counterclockwise arrows button; U+1F504
    -🔙 BACK arrow; U+1F519
    -🔚 END arrow; U+1F51A
    -🔛 ON! arrow; U+1F51B
    -🔜 SOON arrow; U+1F51C
    -🔝 TOP arrow; U+1F51D
    -🛐 place of worship; U+1F6D0
    -⚛ atom symbol; U+269B
    -🕉 om; U+1F549
    -✡ star of David; U+2721
    -☸ wheel of dharma; U+2638
    -☯ yin yang; U+262F
    -✝ latin cross; U+271D
    -☦ orthodox cross; U+2626
    -☪ star and crescent; U+262A
    -☮ peace symbol; U+262E
    -🕎 menorah; U+1F54E
    -🔯 dotted six-pointed star; U+1F52F
    -♈ Aries; U+2648
    -♉ Taurus; U+2649
    -♊ Gemini; U+264A
    -♋ Cancer; U+264B
    -♌ Leo; U+264C
    -♍ Virgo; U+264D
    -♎ Libra; U+264E
    -♏ Scorpio; U+264F
    -♐ Sagittarius; U+2650
    -♑ Capricorn; U+2651
    -♒ Aquarius; U+2652
    -♓ Pisces; U+2653
    -⛎ Ophiuchus; U+26CE
    -🔀 shuffle tracks button; U+1F500
    -🔁 repeat button; U+1F501
    -🔂 repeat single button; U+1F502
    -▶ play button; U+25B6
    -⏩ fast-forward button; U+23E9
    -⏭ next track button; U+23ED
    -⏯ play or pause button; U+23EF
    -◀ reverse button; U+25C0
    -⏪ fast reverse button; U+23EA
    -⏮ last track button; U+23EE
    -🔼 upwards button; U+1F53C
    -⏫ fast up button; U+23EB
    -🔽 downwards button; U+1F53D
    -⏬ fast down button; U+23EC
    -⏸ pause button; U+23F8
    -⏹ stop button; U+23F9
    -⏺ record button; U+23FA
    -⏏ eject button; U+23CF
    -🎦 cinema; U+1F3A6
    -🔅 dim button; U+1F505
    -🔆 bright button; U+1F506
    -📶 antenna bars; U+1F4F6
    -📳 vibration mode; U+1F4F3
    -📴 mobile phone off; U+1F4F4
    -♀ female sign; U+2640
    -♂ male sign; U+2642
    -⚕ medical symbol; U+2695
    -♾ infinity; U+267E
    -♻ recycling symbol; U+267B
    -⚜ fleur-de-lis; U+269C
    -🔱 trident emblem; U+1F531
    -📛 name badge; U+1F4DB
    -🔰 Japanese symbol for beginner; U+1F530
    -⭕ heavy large circle; U+2B55
    -✅ white heavy check mark; U+2705
    -☑ ballot box with check; U+2611
    -✔ heavy check mark; U+2714
    -✖ heavy multiplication x; U+2716
    -❌ cross mark; U+274C
    -❎ cross mark button; U+274E
    -➕ heavy plus sign; U+2795
    -➖ heavy minus sign; U+2796
    -➗ heavy division sign; U+2797
    -➰ curly loop; U+27B0
    -➿ double curly loop; U+27BF
    -〽 part alternation mark; U+303D
    -✳ eight-spoked asterisk; U+2733
    -✴ eight-pointed star; U+2734
    -❇ sparkle; U+2747
    -‼ double exclamation mark; U+203C
    -⁉ exclamation question mark; U+2049
    -❓ question mark; U+2753
    -❔ white question mark; U+2754
    -❕ white exclamation mark; U+2755
    -❗ exclamation mark; U+2757
    -〰 wavy dash; U+3030
    -© copyright; U+00A9
    -® registered; U+00AE
    -™ trade mark; U+2122
    -#️⃣ keycap: #; U+0023 U+FE0F U+20E3
    -*️⃣ keycap: *; U+002A U+FE0F U+20E3
    -0️⃣ keycap: 0; U+0030 U+FE0F U+20E3
    -1️⃣ keycap: 1; U+0031 U+FE0F U+20E3
    -2️⃣ keycap: 2; U+0032 U+FE0F U+20E3
    -3️⃣ keycap: 3; U+0033 U+FE0F U+20E3
    -4️⃣ keycap: 4; U+0034 U+FE0F U+20E3
    -5️⃣ keycap: 5; U+0035 U+FE0F U+20E3
    -6️⃣ keycap: 6; U+0036 U+FE0F U+20E3
    -7️⃣ keycap: 7; U+0037 U+FE0F U+20E3
    -8️⃣ keycap: 8; U+0038 U+FE0F U+20E3
    -9️⃣ keycap: 9; U+0039 U+FE0F U+20E3
    -🔟 keycap: 10; U+1F51F
    -🔠 input latin uppercase; U+1F520
    -🔡 input latin lowercase; U+1F521
    -🔢 input numbers; U+1F522
    -🔣 input symbols; U+1F523
    -🔤 input latin letters; U+1F524
    -🅰 A button (blood type); U+1F170
    -🆎 AB button (blood type); U+1F18E
    -🅱 B button (blood type); U+1F171
    -🆑 CL button; U+1F191
    -🆒 COOL button; U+1F192
    -🆓 FREE button; U+1F193
    -ℹ information; U+2139
    -🆔 ID button; U+1F194
    -Ⓜ circled M; U+24C2
    -🆕 NEW button; U+1F195
    -🆖 NG button; U+1F196
    -🅾 O button (blood type); U+1F17E
    -🆗 OK button; U+1F197
    -🅿 P button; U+1F17F
    -🆘 SOS button; U+1F198
    -🆙 UP! button; U+1F199
    -🆚 VS button; U+1F19A
    -🈁 Japanese “here” button; U+1F201
    -🈂 Japanese “service charge” button; U+1F202
    -🈷 Japanese “monthly amount” button; U+1F237
    -🈶 Japanese “not free of charge” button; U+1F236
    -🈯 Japanese “reserved” button; U+1F22F
    -🉐 Japanese “bargain” button; U+1F250
    -🈹 Japanese “discount” button; U+1F239
    -🈚 Japanese “free of charge” button; U+1F21A
    -🈲 Japanese “prohibited” button; U+1F232
    -🉑 Japanese “acceptable” button; U+1F251
    -🈸 Japanese “application” button; U+1F238
    -🈴 Japanese “passing grade” button; U+1F234
    -🈳 Japanese “vacancy” button; U+1F233
    -㊗ Japanese “congratulations” button; U+3297
    -㊙ Japanese “secret” button; U+3299
    -🈺 Japanese “open for business” button; U+1F23A
    -🈵 Japanese “no vacancy” button; U+1F235
    -🔴 red circle; U+1F534
    -🔵 blue circle; U+1F535
    -⚪ white circle; U+26AA
    -⚫ black circle; U+26AB
    -⬜ white large square; U+2B1C
    -⬛ black large square; U+2B1B
    -◼ black medium square; U+25FC
    -◻ white medium square; U+25FB
    -◽ white medium-small square; U+25FD
    -◾ black medium-small square; U+25FE
    -▫ white small square; U+25AB
    -▪ black small square; U+25AA
    -🔶 large orange diamond; U+1F536
    -🔷 large blue diamond; U+1F537
    -🔸 small orange diamond; U+1F538
    -🔹 small blue diamond; U+1F539
    -🔺 red triangle pointed up; U+1F53A
    -🔻 red triangle pointed down; U+1F53B
    -💠 diamond with a dot; U+1F4A0
    -🔘 radio button; U+1F518
    -🔲 black square button; U+1F532
    -🔳 white square button; U+1F533
    -🏁 chequered flag; U+1F3C1
    -🚩 triangular flag; U+1F6A9
    -🎌 crossed flags; U+1F38C
    -🏴 black flag; U+1F3F4
    -🏳 white flag; U+1F3F3
    -🏳️‍🌈 rainbow flag; U+1F3F3 U+FE0F U+200D U+1F308
    -🏴‍☠️ pirate flag; U+1F3F4 U+200D U+2620 U+FE0F
    +
    😀 grinning face; U+1F600
    +😃 grinning face with big eyes; U+1F603
    +😄 grinning face with smiling eyes; U+1F604
    +😁 beaming face with smiling eyes; U+1F601
    +😆 grinning squinting face; U+1F606
    +😅 grinning face with sweat; U+1F605
    +🤣 rolling on the floor laughing; U+1F923
    +😂 face with tears of joy; U+1F602
    +🙂 slightly smiling face; U+1F642
    +🙃 upside-down face; U+1F643
    +😉 winking face; U+1F609
    +😊 smiling face with smiling eyes; U+1F60A
    +😇 smiling face with halo; U+1F607
    +🥰 smiling face with 3 hearts; U+1F970
    +😍 smiling face with heart-eyes; U+1F60D
    +🤩 star-struck; U+1F929
    +😘 face blowing a kiss; U+1F618
    +😗 kissing face; U+1F617
    +☺ smiling face; U+263A
    +😚 kissing face with closed eyes; U+1F61A
    +😙 kissing face with smiling eyes; U+1F619
    +😋 face savoring food; U+1F60B
    +😛 face with tongue; U+1F61B
    +😜 winking face with tongue; U+1F61C
    +🤪 zany face; U+1F92A
    +😝 squinting face with tongue; U+1F61D
    +🤑 money-mouth face; U+1F911
    +🤗 hugging face; U+1F917
    +🤭 face with hand over mouth; U+1F92D
    +🤫 shushing face; U+1F92B
    +🤔 thinking face; U+1F914
    +🤐 zipper-mouth face; U+1F910
    +🤨 face with raised eyebrow; U+1F928
    +😐 neutral face; U+1F610
    +😑 expressionless face; U+1F611
    +😶 face without mouth; U+1F636
    +😏 smirking face; U+1F60F
    +😒 unamused face; U+1F612
    +🙄 face with rolling eyes; U+1F644
    +😬 grimacing face; U+1F62C
    +🤥 lying face; U+1F925
    +😌 relieved face; U+1F60C
    +😔 pensive face; U+1F614
    +😪 sleepy face; U+1F62A
    +🤤 drooling face; U+1F924
    +😴 sleeping face; U+1F634
    +😷 face with medical mask; U+1F637
    +🤒 face with thermometer; U+1F912
    +🤕 face with head-bandage; U+1F915
    +🤢 nauseated face; U+1F922
    +🤮 face vomiting; U+1F92E
    +🤧 sneezing face; U+1F927
    +🥵 hot face; U+1F975
    +🥶 cold face; U+1F976
    +🥴 woozy face; U+1F974
    +😵 dizzy face; U+1F635
    +🤯 exploding head; U+1F92F
    +🤠 cowboy hat face; U+1F920
    +🥳 partying face; U+1F973
    +😎 smiling face with sunglasses; U+1F60E
    +🤓 nerd face; U+1F913
    +🧐 face with monocle; U+1F9D0
    +😕 confused face; U+1F615
    +😟 worried face; U+1F61F
    +🙁 slightly frowning face; U+1F641
    +☹ frowning face; U+2639
    +😮 face with open mouth; U+1F62E
    +😯 hushed face; U+1F62F
    +😲 astonished face; U+1F632
    +😳 flushed face; U+1F633
    +🥺 pleading face; U+1F97A
    +😦 frowning face with open mouth; U+1F626
    +😧 anguished face; U+1F627
    +😨 fearful face; U+1F628
    +😰 anxious face with sweat; U+1F630
    +😥 sad but relieved face; U+1F625
    +😢 crying face; U+1F622
    +😭 loudly crying face; U+1F62D
    +😱 face screaming in fear; U+1F631
    +😖 confounded face; U+1F616
    +😣 persevering face; U+1F623
    +😞 disappointed face; U+1F61E
    +😓 downcast face with sweat; U+1F613
    +😩 weary face; U+1F629
    +😫 tired face; U+1F62B
    +😤 face with steam from nose; U+1F624
    +😡 pouting face; U+1F621
    +😠 angry face; U+1F620
    +🤬 face with symbols on mouth; U+1F92C
    +😈 smiling face with horns; U+1F608
    +👿 angry face with horns; U+1F47F
    +💀 skull; U+1F480
    +☠ skull and crossbones; U+2620
    +💩 pile of poo; U+1F4A9
    +🤡 clown face; U+1F921
    +👹 ogre; U+1F479
    +👺 goblin; U+1F47A
    +👻 ghost; U+1F47B
    +👽 alien; U+1F47D
    +👾 alien monster; U+1F47E
    +🤖 robot face; U+1F916
    +😺 grinning cat face; U+1F63A
    +😸 grinning cat face with smiling eyes; U+1F638
    +😹 cat face with tears of joy; U+1F639
    +😻 smiling cat face with heart-eyes; U+1F63B
    +😼 cat face with wry smile; U+1F63C
    +😽 kissing cat face; U+1F63D
    +🙀 weary cat face; U+1F640
    +😿 crying cat face; U+1F63F
    +😾 pouting cat face; U+1F63E
    +🙈 see-no-evil monkey; U+1F648
    +🙉 hear-no-evil monkey; U+1F649
    +🙊 speak-no-evil monkey; U+1F64A
    +💋 kiss mark; U+1F48B
    +💌 love letter; U+1F48C
    +💘 heart with arrow; U+1F498
    +💝 heart with ribbon; U+1F49D
    +💖 sparkling heart; U+1F496
    +💗 growing heart; U+1F497
    +💓 beating heart; U+1F493
    +💞 revolving hearts; U+1F49E
    +💕 two hearts; U+1F495
    +💟 heart decoration; U+1F49F
    +❣ heavy heart exclamation; U+2763
    +💔 broken heart; U+1F494
    +❤ red heart; U+2764
    +🧡 orange heart; U+1F9E1
    +💛 yellow heart; U+1F49B
    +💚 green heart; U+1F49A
    +💙 blue heart; U+1F499
    +💜 purple heart; U+1F49C
    +🖤 black heart; U+1F5A4
    +💯 hundred points; U+1F4AF
    +💢 anger symbol; U+1F4A2
    +💥 collision; U+1F4A5
    +💫 dizzy; U+1F4AB
    +💦 sweat droplets; U+1F4A6
    +💨 dashing away; U+1F4A8
    +🕳 hole; U+1F573
    +💣 bomb; U+1F4A3
    +💬 speech balloon; U+1F4AC
    +👁️‍🗨️ eye in speech bubble; U+1F441 U+FE0F U+200D U+1F5E8 U+FE0F
    +🗨 left speech bubble; U+1F5E8
    +🗯 right anger bubble; U+1F5EF
    +💭 thought balloon; U+1F4AD
    +💤 zzz; U+1F4A4
    +👋 waving hand; U+1F44B
    +🤚 raised back of hand; U+1F91A
    +🖐 hand with fingers splayed; U+1F590
    +✋ raised hand; U+270B
    +🖖 vulcan salute; U+1F596
    +👌 OK hand; U+1F44C
    +✌ victory hand; U+270C
    +🤞 crossed fingers; U+1F91E
    +🤟 love-you gesture; U+1F91F
    +🤘 sign of the horns; U+1F918
    +🤙 call me hand; U+1F919
    +👈 backhand index pointing left; U+1F448
    +👉 backhand index pointing right; U+1F449
    +👆 backhand index pointing up; U+1F446
    +🖕 middle finger; U+1F595
    +👇 backhand index pointing down; U+1F447
    +☝ index pointing up; U+261D
    +👍 thumbs up; U+1F44D
    +👎 thumbs down; U+1F44E
    +✊ raised fist; U+270A
    +👊 oncoming fist; U+1F44A
    +🤛 left-facing fist; U+1F91B
    +🤜 right-facing fist; U+1F91C
    +👏 clapping hands; U+1F44F
    +🙌 raising hands; U+1F64C
    +👐 open hands; U+1F450
    +🤲 palms up together; U+1F932
    +🤝 handshake; U+1F91D
    +🙏 folded hands; U+1F64F
    +✍ writing hand; U+270D
    +💅 nail polish; U+1F485
    +🤳 selfie; U+1F933
    +💪 flexed biceps; U+1F4AA
    +🦵 leg; U+1F9B5
    +🦶 foot; U+1F9B6
    +👂 ear; U+1F442
    +👃 nose; U+1F443
    +🧠 brain; U+1F9E0
    +🦷 tooth; U+1F9B7
    +🦴 bone; U+1F9B4
    +👀 eyes; U+1F440
    +👁 eye; U+1F441
    +👅 tongue; U+1F445
    +👄 mouth; U+1F444
    +👶 baby; U+1F476
    +🧒 child; U+1F9D2
    +👦 boy; U+1F466
    +👧 girl; U+1F467
    +🧑 person; U+1F9D1
    +👱 person: blond hair; U+1F471
    +👨 man; U+1F468
    +👱‍♂️ man: blond hair; U+1F471 U+200D U+2642 U+FE0F
    +👨‍🦰 man: red hair; U+1F468 U+200D U+1F9B0
    +👨‍🦱 man: curly hair; U+1F468 U+200D U+1F9B1
    +👨‍🦳 man: white hair; U+1F468 U+200D U+1F9B3
    +👨‍🦲 man: bald; U+1F468 U+200D U+1F9B2
    +🧔 man: beard; U+1F9D4
    +👩 woman; U+1F469
    +👱‍♀️ woman: blond hair; U+1F471 U+200D U+2640 U+FE0F
    +👩‍🦰 woman: red hair; U+1F469 U+200D U+1F9B0
    +👩‍🦱 woman: curly hair; U+1F469 U+200D U+1F9B1
    +👩‍🦳 woman: white hair; U+1F469 U+200D U+1F9B3
    +👩‍🦲 woman: bald; U+1F469 U+200D U+1F9B2
    +🧓 older person; U+1F9D3
    +👴 old man; U+1F474
    +👵 old woman; U+1F475
    +🙍 person frowning; U+1F64D
    +🙍‍♂️ man frowning; U+1F64D U+200D U+2642 U+FE0F
    +🙍‍♀️ woman frowning; U+1F64D U+200D U+2640 U+FE0F
    +🙎 person pouting; U+1F64E
    +🙎‍♂️ man pouting; U+1F64E U+200D U+2642 U+FE0F
    +🙎‍♀️ woman pouting; U+1F64E U+200D U+2640 U+FE0F
    +🙅 person gesturing NO; U+1F645
    +🙅‍♂️ man gesturing NO; U+1F645 U+200D U+2642 U+FE0F
    +🙅‍♀️ woman gesturing NO; U+1F645 U+200D U+2640 U+FE0F
    +🙆 person gesturing OK; U+1F646
    +🙆‍♂️ man gesturing OK; U+1F646 U+200D U+2642 U+FE0F
    +🙆‍♀️ woman gesturing OK; U+1F646 U+200D U+2640 U+FE0F
    +💁 person tipping hand; U+1F481
    +💁‍♂️ man tipping hand; U+1F481 U+200D U+2642 U+FE0F
    +💁‍♀️ woman tipping hand; U+1F481 U+200D U+2640 U+FE0F
    +🙋 person raising hand; U+1F64B
    +🙋‍♂️ man raising hand; U+1F64B U+200D U+2642 U+FE0F
    +🙋‍♀️ woman raising hand; U+1F64B U+200D U+2640 U+FE0F
    +🙇 person bowing; U+1F647
    +🙇‍♂️ man bowing; U+1F647 U+200D U+2642 U+FE0F
    +🙇‍♀️ woman bowing; U+1F647 U+200D U+2640 U+FE0F
    +🤦 person facepalming; U+1F926
    +🤦‍♂️ man facepalming; U+1F926 U+200D U+2642 U+FE0F
    +🤦‍♀️ woman facepalming; U+1F926 U+200D U+2640 U+FE0F
    +🤷 person shrugging; U+1F937
    +🤷‍♂️ man shrugging; U+1F937 U+200D U+2642 U+FE0F
    +🤷‍♀️ woman shrugging; U+1F937 U+200D U+2640 U+FE0F
    +👨‍⚕️ man health worker; U+1F468 U+200D U+2695 U+FE0F
    +👩‍⚕️ woman health worker; U+1F469 U+200D U+2695 U+FE0F
    +👨‍🎓 man student; U+1F468 U+200D U+1F393
    +👩‍🎓 woman student; U+1F469 U+200D U+1F393
    +👨‍🏫 man teacher; U+1F468 U+200D U+1F3EB
    +👩‍🏫 woman teacher; U+1F469 U+200D U+1F3EB
    +👨‍⚖️ man judge; U+1F468 U+200D U+2696 U+FE0F
    +👩‍⚖️ woman judge; U+1F469 U+200D U+2696 U+FE0F
    +👨‍🌾 man farmer; U+1F468 U+200D U+1F33E
    +👩‍🌾 woman farmer; U+1F469 U+200D U+1F33E
    +👨‍🍳 man cook; U+1F468 U+200D U+1F373
    +👩‍🍳 woman cook; U+1F469 U+200D U+1F373
    +👨‍🔧 man mechanic; U+1F468 U+200D U+1F527
    +👩‍🔧 woman mechanic; U+1F469 U+200D U+1F527
    +👨‍🏭 man factory worker; U+1F468 U+200D U+1F3ED
    +👩‍🏭 woman factory worker; U+1F469 U+200D U+1F3ED
    +👨‍💼 man office worker; U+1F468 U+200D U+1F4BC
    +👩‍💼 woman office worker; U+1F469 U+200D U+1F4BC
    +👨‍🔬 man scientist; U+1F468 U+200D U+1F52C
    +👩‍🔬 woman scientist; U+1F469 U+200D U+1F52C
    +👨‍💻 man technologist; U+1F468 U+200D U+1F4BB
    +👩‍💻 woman technologist; U+1F469 U+200D U+1F4BB
    +👨‍🎤 man singer; U+1F468 U+200D U+1F3A4
    +👩‍🎤 woman singer; U+1F469 U+200D U+1F3A4
    +👨‍🎨 man artist; U+1F468 U+200D U+1F3A8
    +👩‍🎨 woman artist; U+1F469 U+200D U+1F3A8
    +👨‍✈️ man pilot; U+1F468 U+200D U+2708 U+FE0F
    +👩‍✈️ woman pilot; U+1F469 U+200D U+2708 U+FE0F
    +👨‍🚀 man astronaut; U+1F468 U+200D U+1F680
    +👩‍🚀 woman astronaut; U+1F469 U+200D U+1F680
    +👨‍🚒 man firefighter; U+1F468 U+200D U+1F692
    +👩‍🚒 woman firefighter; U+1F469 U+200D U+1F692
    +👮 police officer; U+1F46E
    +👮‍♂️ man police officer; U+1F46E U+200D U+2642 U+FE0F
    +👮‍♀️ woman police officer; U+1F46E U+200D U+2640 U+FE0F
    +🕵 detective; U+1F575
    +🕵️‍♂️ man detective; U+1F575 U+FE0F U+200D U+2642 U+FE0F
    +🕵️‍♀️ woman detective; U+1F575 U+FE0F U+200D U+2640 U+FE0F
    +💂 guard; U+1F482
    +💂‍♂️ man guard; U+1F482 U+200D U+2642 U+FE0F
    +💂‍♀️ woman guard; U+1F482 U+200D U+2640 U+FE0F
    +👷 construction worker; U+1F477
    +👷‍♂️ man construction worker; U+1F477 U+200D U+2642 U+FE0F
    +👷‍♀️ woman construction worker; U+1F477 U+200D U+2640 U+FE0F
    +🤴 prince; U+1F934
    +👸 princess; U+1F478
    +👳 person wearing turban; U+1F473
    +👳‍♂️ man wearing turban; U+1F473 U+200D U+2642 U+FE0F
    +👳‍♀️ woman wearing turban; U+1F473 U+200D U+2640 U+FE0F
    +👲 man with Chinese cap; U+1F472
    +🧕 woman with headscarf; U+1F9D5
    +🤵 man in tuxedo; U+1F935
    +👰 bride with veil; U+1F470
    +🤰 pregnant woman; U+1F930
    +🤱 breast-feeding; U+1F931
    +👼 baby angel; U+1F47C
    +🎅 Santa Claus; U+1F385
    +🤶 Mrs. Claus; U+1F936
    +🦸 superhero; U+1F9B8
    +🦸‍♂️ man superhero; U+1F9B8 U+200D U+2642 U+FE0F
    +🦸‍♀️ woman superhero; U+1F9B8 U+200D U+2640 U+FE0F
    +🦹 supervillain; U+1F9B9
    +🦹‍♂️ man supervillain; U+1F9B9 U+200D U+2642 U+FE0F
    +🦹‍♀️ woman supervillain; U+1F9B9 U+200D U+2640 U+FE0F
    +🧙 mage; U+1F9D9
    +🧙‍♂️ man mage; U+1F9D9 U+200D U+2642 U+FE0F
    +🧙‍♀️ woman mage; U+1F9D9 U+200D U+2640 U+FE0F
    +🧚 fairy; U+1F9DA
    +🧚‍♂️ man fairy; U+1F9DA U+200D U+2642 U+FE0F
    +🧚‍♀️ woman fairy; U+1F9DA U+200D U+2640 U+FE0F
    +🧛 vampire; U+1F9DB
    +🧛‍♂️ man vampire; U+1F9DB U+200D U+2642 U+FE0F
    +🧛‍♀️ woman vampire; U+1F9DB U+200D U+2640 U+FE0F
    +🧜 merperson; U+1F9DC
    +🧜‍♂️ merman; U+1F9DC U+200D U+2642 U+FE0F
    +🧜‍♀️ mermaid; U+1F9DC U+200D U+2640 U+FE0F
    +🧝 elf; U+1F9DD
    +🧝‍♂️ man elf; U+1F9DD U+200D U+2642 U+FE0F
    +🧝‍♀️ woman elf; U+1F9DD U+200D U+2640 U+FE0F
    +🧞 genie; U+1F9DE
    +🧞‍♂️ man genie; U+1F9DE U+200D U+2642 U+FE0F
    +🧞‍♀️ woman genie; U+1F9DE U+200D U+2640 U+FE0F
    +🧟 zombie; U+1F9DF
    +🧟‍♂️ man zombie; U+1F9DF U+200D U+2642 U+FE0F
    +🧟‍♀️ woman zombie; U+1F9DF U+200D U+2640 U+FE0F
    +💆 person getting massage; U+1F486
    +💆‍♂️ man getting massage; U+1F486 U+200D U+2642 U+FE0F
    +💆‍♀️ woman getting massage; U+1F486 U+200D U+2640 U+FE0F
    +💇 person getting haircut; U+1F487
    +💇‍♂️ man getting haircut; U+1F487 U+200D U+2642 U+FE0F
    +💇‍♀️ woman getting haircut; U+1F487 U+200D U+2640 U+FE0F
    +🚶 person walking; U+1F6B6
    +🚶‍♂️ man walking; U+1F6B6 U+200D U+2642 U+FE0F
    +🚶‍♀️ woman walking; U+1F6B6 U+200D U+2640 U+FE0F
    +🏃 person running; U+1F3C3
    +🏃‍♂️ man running; U+1F3C3 U+200D U+2642 U+FE0F
    +🏃‍♀️ woman running; U+1F3C3 U+200D U+2640 U+FE0F
    +💃 woman dancing; U+1F483
    +🕺 man dancing; U+1F57A
    +🕴 man in suit levitating; U+1F574
    +👯 people with bunny ears; U+1F46F
    +👯‍♂️ men with bunny ears; U+1F46F U+200D U+2642 U+FE0F
    +👯‍♀️ women with bunny ears; U+1F46F U+200D U+2640 U+FE0F
    +🧖 person in steamy room; U+1F9D6
    +🧖‍♂️ man in steamy room; U+1F9D6 U+200D U+2642 U+FE0F
    +🧖‍♀️ woman in steamy room; U+1F9D6 U+200D U+2640 U+FE0F
    +🧗 person climbing; U+1F9D7
    +🧗‍♂️ man climbing; U+1F9D7 U+200D U+2642 U+FE0F
    +🧗‍♀️ woman climbing; U+1F9D7 U+200D U+2640 U+FE0F
    +🤺 person fencing; U+1F93A
    +🏇 horse racing; U+1F3C7
    +⛷ skier; U+26F7
    +🏂 snowboarder; U+1F3C2
    +🏌 person golfing; U+1F3CC
    +🏌️‍♂️ man golfing; U+1F3CC U+FE0F U+200D U+2642 U+FE0F
    +🏌️‍♀️ woman golfing; U+1F3CC U+FE0F U+200D U+2640 U+FE0F
    +🏄 person surfing; U+1F3C4
    +🏄‍♂️ man surfing; U+1F3C4 U+200D U+2642 U+FE0F
    +🏄‍♀️ woman surfing; U+1F3C4 U+200D U+2640 U+FE0F
    +🚣 person rowing boat; U+1F6A3
    +🚣‍♂️ man rowing boat; U+1F6A3 U+200D U+2642 U+FE0F
    +🚣‍♀️ woman rowing boat; U+1F6A3 U+200D U+2640 U+FE0F
    +🏊 person swimming; U+1F3CA
    +🏊‍♂️ man swimming; U+1F3CA U+200D U+2642 U+FE0F
    +🏊‍♀️ woman swimming; U+1F3CA U+200D U+2640 U+FE0F
    +⛹ person bouncing ball; U+26F9
    +⛹️‍♂️ man bouncing ball; U+26F9 U+FE0F U+200D U+2642 U+FE0F
    +⛹️‍♀️ woman bouncing ball; U+26F9 U+FE0F U+200D U+2640 U+FE0F
    +🏋 person lifting weights; U+1F3CB
    +🏋️‍♂️ man lifting weights; U+1F3CB U+FE0F U+200D U+2642 U+FE0F
    +🏋️‍♀️ woman lifting weights; U+1F3CB U+FE0F U+200D U+2640 U+FE0F
    +🚴 person biking; U+1F6B4
    +🚴‍♂️ man biking; U+1F6B4 U+200D U+2642 U+FE0F
    +🚴‍♀️ woman biking; U+1F6B4 U+200D U+2640 U+FE0F
    +🚵 person mountain biking; U+1F6B5
    +🚵‍♂️ man mountain biking; U+1F6B5 U+200D U+2642 U+FE0F
    +🚵‍♀️ woman mountain biking; U+1F6B5 U+200D U+2640 U+FE0F
    +🤸 person cartwheeling; U+1F938
    +🤸‍♂️ man cartwheeling; U+1F938 U+200D U+2642 U+FE0F
    +🤸‍♀️ woman cartwheeling; U+1F938 U+200D U+2640 U+FE0F
    +🤼 people wrestling; U+1F93C
    +🤼‍♂️ men wrestling; U+1F93C U+200D U+2642 U+FE0F
    +🤼‍♀️ women wrestling; U+1F93C U+200D U+2640 U+FE0F
    +🤽 person playing water polo; U+1F93D
    +🤽‍♂️ man playing water polo; U+1F93D U+200D U+2642 U+FE0F
    +🤽‍♀️ woman playing water polo; U+1F93D U+200D U+2640 U+FE0F
    +🤾 person playing handball; U+1F93E
    +🤾‍♂️ man playing handball; U+1F93E U+200D U+2642 U+FE0F
    +🤾‍♀️ woman playing handball; U+1F93E U+200D U+2640 U+FE0F
    +🤹 person juggling; U+1F939
    +🤹‍♂️ man juggling; U+1F939 U+200D U+2642 U+FE0F
    +🤹‍♀️ woman juggling; U+1F939 U+200D U+2640 U+FE0F
    +🧘 person in lotus position; U+1F9D8
    +🧘‍♂️ man in lotus position; U+1F9D8 U+200D U+2642 U+FE0F
    +🧘‍♀️ woman in lotus position; U+1F9D8 U+200D U+2640 U+FE0F
    +🛀 person taking bath; U+1F6C0
    +🛌 person in bed; U+1F6CC
    +👭 women holding hands; U+1F46D
    +👫 woman and man holding hands; U+1F46B
    +👬 men holding hands; U+1F46C
    +💏 kiss; U+1F48F
    +👩‍❤️‍💋‍👨 kiss: woman, man; U+1F469 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F468
    +👨‍❤️‍💋‍👨 kiss: man, man; U+1F468 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F468
    +👩‍❤️‍💋‍👩 kiss: woman, woman; U+1F469 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F469
    +💑 couple with heart; U+1F491
    +👩‍❤️‍👨 couple with heart: woman, man; U+1F469 U+200D U+2764 U+FE0F U+200D U+1F468
    +👨‍❤️‍👨 couple with heart: man, man; U+1F468 U+200D U+2764 U+FE0F U+200D U+1F468
    +👩‍❤️‍👩 couple with heart: woman, woman; U+1F469 U+200D U+2764 U+FE0F U+200D U+1F469
    +👪 family; U+1F46A
    +👨‍👩‍👦 family: man, woman, boy; U+1F468 U+200D U+1F469 U+200D U+1F466
    +👨‍👩‍👧 family: man, woman, girl; U+1F468 U+200D U+1F469 U+200D U+1F467
    +👨‍👩‍👧‍👦 family: man, woman, girl, boy; U+1F468 U+200D U+1F469 U+200D U+1F467 U+200D U+1F466
    +👨‍👩‍👦‍👦 family: man, woman, boy, boy; U+1F468 U+200D U+1F469 U+200D U+1F466 U+200D U+1F466
    +👨‍👩‍👧‍👧 family: man, woman, girl, girl; U+1F468 U+200D U+1F469 U+200D U+1F467 U+200D U+1F467
    +👨‍👨‍👦 family: man, man, boy; U+1F468 U+200D U+1F468 U+200D U+1F466
    +👨‍👨‍👧 family: man, man, girl; U+1F468 U+200D U+1F468 U+200D U+1F467
    +👨‍👨‍👧‍👦 family: man, man, girl, boy; U+1F468 U+200D U+1F468 U+200D U+1F467 U+200D U+1F466
    +👨‍👨‍👦‍👦 family: man, man, boy, boy; U+1F468 U+200D U+1F468 U+200D U+1F466 U+200D U+1F466
    +👨‍👨‍👧‍👧 family: man, man, girl, girl; U+1F468 U+200D U+1F468 U+200D U+1F467 U+200D U+1F467
    +👩‍👩‍👦 family: woman, woman, boy; U+1F469 U+200D U+1F469 U+200D U+1F466
    +👩‍👩‍👧 family: woman, woman, girl; U+1F469 U+200D U+1F469 U+200D U+1F467
    +👩‍👩‍👧‍👦 family: woman, woman, girl, boy; U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D U+1F466
    +👩‍👩‍👦‍👦 family: woman, woman, boy, boy; U+1F469 U+200D U+1F469 U+200D U+1F466 U+200D U+1F466
    +👩‍👩‍👧‍👧 family: woman, woman, girl, girl; U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D U+1F467
    +👨‍👦 family: man, boy; U+1F468 U+200D U+1F466
    +👨‍👦‍👦 family: man, boy, boy; U+1F468 U+200D U+1F466 U+200D U+1F466
    +👨‍👧 family: man, girl; U+1F468 U+200D U+1F467
    +👨‍👧‍👦 family: man, girl, boy; U+1F468 U+200D U+1F467 U+200D U+1F466
    +👨‍👧‍👧 family: man, girl, girl; U+1F468 U+200D U+1F467 U+200D U+1F467
    +👩‍👦 family: woman, boy; U+1F469 U+200D U+1F466
    +👩‍👦‍👦 family: woman, boy, boy; U+1F469 U+200D U+1F466 U+200D U+1F466
    +👩‍👧 family: woman, girl; U+1F469 U+200D U+1F467
    +👩‍👧‍👦 family: woman, girl, boy; U+1F469 U+200D U+1F467 U+200D U+1F466
    +👩‍👧‍👧 family: woman, girl, girl; U+1F469 U+200D U+1F467 U+200D U+1F467
    +🗣 speaking head; U+1F5E3
    +👤 bust in silhouette; U+1F464
    +👥 busts in silhouette; U+1F465
    +👣 footprints; U+1F463
    +🦰 red hair; U+1F9B0
    +🦱 curly hair; U+1F9B1
    +🦳 white hair; U+1F9B3
    +🦲 bald; U+1F9B2
    +🐵 monkey face; U+1F435
    +🐒 monkey; U+1F412
    +🦍 gorilla; U+1F98D
    +🐶 dog face; U+1F436
    +🐕 dog; U+1F415
    +🐩 poodle; U+1F429
    +🐺 wolf face; U+1F43A
    +🦊 fox face; U+1F98A
    +🦝 raccoon; U+1F99D
    +🐱 cat face; U+1F431
    +🐈 cat; U+1F408
    +🦁 lion face; U+1F981
    +🐯 tiger face; U+1F42F
    +🐅 tiger; U+1F405
    +🐆 leopard; U+1F406
    +🐴 horse face; U+1F434
    +🐎 horse; U+1F40E
    +🦄 unicorn face; U+1F984
    +🦓 zebra; U+1F993
    +🦌 deer; U+1F98C
    +🐮 cow face; U+1F42E
    +🐂 ox; U+1F402
    +🐃 water buffalo; U+1F403
    +🐄 cow; U+1F404
    +🐷 pig face; U+1F437
    +🐖 pig; U+1F416
    +🐗 boar; U+1F417
    +🐽 pig nose; U+1F43D
    +🐏 ram; U+1F40F
    +🐑 ewe; U+1F411
    +🐐 goat; U+1F410
    +🐪 camel; U+1F42A
    +🐫 two-hump camel; U+1F42B
    +🦙 llama; U+1F999
    +🦒 giraffe; U+1F992
    +🐘 elephant; U+1F418
    +🦏 rhinoceros; U+1F98F
    +🦛 hippopotamus; U+1F99B
    +🐭 mouse face; U+1F42D
    +🐁 mouse; U+1F401
    +🐀 rat; U+1F400
    +🐹 hamster face; U+1F439
    +🐰 rabbit face; U+1F430
    +🐇 rabbit; U+1F407
    +🐿 chipmunk; U+1F43F
    +🦔 hedgehog; U+1F994
    +🦇 bat; U+1F987
    +🐻 bear face; U+1F43B
    +🐨 koala; U+1F428
    +🐼 panda face; U+1F43C
    +🦘 kangaroo; U+1F998
    +🦡 badger; U+1F9A1
    +🐾 paw prints; U+1F43E
    +🦃 turkey; U+1F983
    +🐔 chicken; U+1F414
    +🐓 rooster; U+1F413
    +🐣 hatching chick; U+1F423
    +🐤 baby chick; U+1F424
    +🐥 front-facing baby chick; U+1F425
    +🐦 bird; U+1F426
    +🐧 penguin; U+1F427
    +🕊 dove; U+1F54A
    +🦅 eagle; U+1F985
    +🦆 duck; U+1F986
    +🦢 swan; U+1F9A2
    +🦉 owl; U+1F989
    +🦚 peacock; U+1F99A
    +🦜 parrot; U+1F99C
    +🐸 frog face; U+1F438
    +🐊 crocodile; U+1F40A
    +🐢 turtle; U+1F422
    +🦎 lizard; U+1F98E
    +🐍 snake; U+1F40D
    +🐲 dragon face; U+1F432
    +🐉 dragon; U+1F409
    +🦕 sauropod; U+1F995
    +🦖 T-Rex; U+1F996
    +🐳 spouting whale; U+1F433
    +🐋 whale; U+1F40B
    +🐬 dolphin; U+1F42C
    +🐟 fish; U+1F41F
    +🐠 tropical fish; U+1F420
    +🐡 blowfish; U+1F421
    +🦈 shark; U+1F988
    +🐙 octopus; U+1F419
    +🐚 spiral shell; U+1F41A
    +🐌 snail; U+1F40C
    +🦋 butterfly; U+1F98B
    +🐛 bug; U+1F41B
    +🐜 ant; U+1F41C
    +🐝 honeybee; U+1F41D
    +🐞 lady beetle; U+1F41E
    +🦗 cricket; U+1F997
    +🕷 spider; U+1F577
    +🕸 spider web; U+1F578
    +🦂 scorpion; U+1F982
    +🦟 mosquito; U+1F99F
    +🦠 microbe; U+1F9A0
    +💐 bouquet; U+1F490
    +🌸 cherry blossom; U+1F338
    +💮 white flower; U+1F4AE
    +🏵 rosette; U+1F3F5
    +🌹 rose; U+1F339
    +🥀 wilted flower; U+1F940
    +🌺 hibiscus; U+1F33A
    +🌻 sunflower; U+1F33B
    +🌼 blossom; U+1F33C
    +🌷 tulip; U+1F337
    +🌱 seedling; U+1F331
    +🌲 evergreen tree; U+1F332
    +🌳 deciduous tree; U+1F333
    +🌴 palm tree; U+1F334
    +🌵 cactus; U+1F335
    +🌾 sheaf of rice; U+1F33E
    +🌿 herb; U+1F33F
    +☘ shamrock; U+2618
    +🍀 four leaf clover; U+1F340
    +🍁 maple leaf; U+1F341
    +🍂 fallen leaf; U+1F342
    +🍃 leaf fluttering in wind; U+1F343
    +🍇 grapes; U+1F347
    +🍈 melon; U+1F348
    +🍉 watermelon; U+1F349
    +🍊 tangerine; U+1F34A
    +🍋 lemon; U+1F34B
    +🍌 banana; U+1F34C
    +🍍 pineapple; U+1F34D
    +🥭 mango; U+1F96D
    +🍎 red apple; U+1F34E
    +🍏 green apple; U+1F34F
    +🍐 pear; U+1F350
    +🍑 peach; U+1F351
    +🍒 cherries; U+1F352
    +🍓 strawberry; U+1F353
    +🥝 kiwi fruit; U+1F95D
    +🍅 tomato; U+1F345
    +🥥 coconut; U+1F965
    +🥑 avocado; U+1F951
    +🍆 eggplant; U+1F346
    +🥔 potato; U+1F954
    +🥕 carrot; U+1F955
    +🌽 ear of corn; U+1F33D
    +🌶 hot pepper; U+1F336
    +🥒 cucumber; U+1F952
    +🥬 leafy green; U+1F96C
    +🥦 broccoli; U+1F966
    +🍄 mushroom; U+1F344
    +🥜 peanuts; U+1F95C
    +🌰 chestnut; U+1F330
    +🍞 bread; U+1F35E
    +🥐 croissant; U+1F950
    +🥖 baguette bread; U+1F956
    +🥨 pretzel; U+1F968
    +🥯 bagel; U+1F96F
    +🥞 pancakes; U+1F95E
    +🧀 cheese wedge; U+1F9C0
    +🍖 meat on bone; U+1F356
    +🍗 poultry leg; U+1F357
    +🥩 cut of meat; U+1F969
    +🥓 bacon; U+1F953
    +🍔 hamburger; U+1F354
    +🍟 french fries; U+1F35F
    +🍕 pizza; U+1F355
    +🌭 hot dog; U+1F32D
    +🥪 sandwich; U+1F96A
    +🌮 taco; U+1F32E
    +🌯 burrito; U+1F32F
    +🥙 stuffed flatbread; U+1F959
    +🥚 egg; U+1F95A
    +🍳 cooking; U+1F373
    +🥘 shallow pan of food; U+1F958
    +🍲 pot of food; U+1F372
    +🥣 bowl with spoon; U+1F963
    +🥗 green salad; U+1F957
    +🍿 popcorn; U+1F37F
    +🧂 salt; U+1F9C2
    +🥫 canned food; U+1F96B
    +🍱 bento box; U+1F371
    +🍘 rice cracker; U+1F358
    +🍙 rice ball; U+1F359
    +🍚 cooked rice; U+1F35A
    +🍛 curry rice; U+1F35B
    +🍜 steaming bowl; U+1F35C
    +🍝 spaghetti; U+1F35D
    +🍠 roasted sweet potato; U+1F360
    +🍢 oden; U+1F362
    +🍣 sushi; U+1F363
    +🍤 fried shrimp; U+1F364
    +🍥 fish cake with swirl; U+1F365
    +🥮 moon cake; U+1F96E
    +🍡 dango; U+1F361
    +🥟 dumpling; U+1F95F
    +🥠 fortune cookie; U+1F960
    +🥡 takeout box; U+1F961
    +🦀 crab; U+1F980
    +🦞 lobster; U+1F99E
    +🦐 shrimp; U+1F990
    +🦑 squid; U+1F991
    +🍦 soft ice cream; U+1F366
    +🍧 shaved ice; U+1F367
    +🍨 ice cream; U+1F368
    +🍩 doughnut; U+1F369
    +🍪 cookie; U+1F36A
    +🎂 birthday cake; U+1F382
    +🍰 shortcake; U+1F370
    +🧁 cupcake; U+1F9C1
    +🥧 pie; U+1F967
    +🍫 chocolate bar; U+1F36B
    +🍬 candy; U+1F36C
    +🍭 lollipop; U+1F36D
    +🍮 custard; U+1F36E
    +🍯 honey pot; U+1F36F
    +🍼 baby bottle; U+1F37C
    +🥛 glass of milk; U+1F95B
    +☕ hot beverage; U+2615
    +🍵 teacup without handle; U+1F375
    +🍶 sake; U+1F376
    +🍾 bottle with popping cork; U+1F37E
    +🍷 wine glass; U+1F377
    +🍸 cocktail glass; U+1F378
    +🍹 tropical drink; U+1F379
    +🍺 beer mug; U+1F37A
    +🍻 clinking beer mugs; U+1F37B
    +🥂 clinking glasses; U+1F942
    +🥃 tumbler glass; U+1F943
    +🥤 cup with straw; U+1F964
    +🥢 chopsticks; U+1F962
    +🍽 fork and knife with plate; U+1F37D
    +🍴 fork and knife; U+1F374
    +🥄 spoon; U+1F944
    +🔪 kitchen knife; U+1F52A
    +🏺 amphora; U+1F3FA
    +🌍 globe showing Europe-Africa; U+1F30D
    +🌎 globe showing Americas; U+1F30E
    +🌏 globe showing Asia-Australia; U+1F30F
    +🌐 globe with meridians; U+1F310
    +🗺 world map; U+1F5FA
    +🗾 map of Japan; U+1F5FE
    +🧭 compass; U+1F9ED
    +🏔 snow-capped mountain; U+1F3D4
    +⛰ mountain; U+26F0
    +🌋 volcano; U+1F30B
    +🗻 mount fuji; U+1F5FB
    +🏕 camping; U+1F3D5
    +🏖 beach with umbrella; U+1F3D6
    +🏜 desert; U+1F3DC
    +🏝 desert island; U+1F3DD
    +🏞 national park; U+1F3DE
    +🏟 stadium; U+1F3DF
    +🏛 classical building; U+1F3DB
    +🏗 building construction; U+1F3D7
    +🧱 brick; U+1F9F1
    +🏘 houses; U+1F3D8
    +🏚 derelict house; U+1F3DA
    +🏠 house; U+1F3E0
    +🏡 house with garden; U+1F3E1
    +🏢 office building; U+1F3E2
    +🏣 Japanese post office; U+1F3E3
    +🏤 post office; U+1F3E4
    +🏥 hospital; U+1F3E5
    +🏦 bank; U+1F3E6
    +🏨 hotel; U+1F3E8
    +🏩 love hotel; U+1F3E9
    +🏪 convenience store; U+1F3EA
    +🏫 school; U+1F3EB
    +🏬 department store; U+1F3EC
    +🏭 factory; U+1F3ED
    +🏯 Japanese castle; U+1F3EF
    +🏰 castle; U+1F3F0
    +💒 wedding; U+1F492
    +🗼 Tokyo tower; U+1F5FC
    +🗽 Statue of Liberty; U+1F5FD
    +⛪ church; U+26EA
    +🕌 mosque; U+1F54C
    +🕍 synagogue; U+1F54D
    +⛩ shinto shrine; U+26E9
    +🕋 kaaba; U+1F54B
    +⛲ fountain; U+26F2
    +⛺ tent; U+26FA
    +🌁 foggy; U+1F301
    +🌃 night with stars; U+1F303
    +🏙 cityscape; U+1F3D9
    +🌄 sunrise over mountains; U+1F304
    +🌅 sunrise; U+1F305
    +🌆 cityscape at dusk; U+1F306
    +🌇 sunset; U+1F307
    +🌉 bridge at night; U+1F309
    +♨ hot springs; U+2668
    +🌌 milky way; U+1F30C
    +🎠 carousel horse; U+1F3A0
    +🎡 ferris wheel; U+1F3A1
    +🎢 roller coaster; U+1F3A2
    +💈 barber pole; U+1F488
    +🎪 circus tent; U+1F3AA
    +🚂 locomotive; U+1F682
    +🚃 railway car; U+1F683
    +🚄 high-speed train; U+1F684
    +🚅 bullet train; U+1F685
    +🚆 train; U+1F686
    +🚇 metro; U+1F687
    +🚈 light rail; U+1F688
    +🚉 station; U+1F689
    +🚊 tram; U+1F68A
    +🚝 monorail; U+1F69D
    +🚞 mountain railway; U+1F69E
    +🚋 tram car; U+1F68B
    +🚌 bus; U+1F68C
    +🚍 oncoming bus; U+1F68D
    +🚎 trolleybus; U+1F68E
    +🚐 minibus; U+1F690
    +🚑 ambulance; U+1F691
    +🚒 fire engine; U+1F692
    +🚓 police car; U+1F693
    +🚔 oncoming police car; U+1F694
    +🚕 taxi; U+1F695
    +🚖 oncoming taxi; U+1F696
    +🚗 automobile; U+1F697
    +🚘 oncoming automobile; U+1F698
    +🚙 sport utility vehicle; U+1F699
    +🚚 delivery truck; U+1F69A
    +🚛 articulated lorry; U+1F69B
    +🚜 tractor; U+1F69C
    +🏎 racing car; U+1F3CE
    +🏍 motorcycle; U+1F3CD
    +🛵 motor scooter; U+1F6F5
    +🚲 bicycle; U+1F6B2
    +🛴 kick scooter; U+1F6F4
    +🛹 skateboard; U+1F6F9
    +🚏 bus stop; U+1F68F
    +🛣 motorway; U+1F6E3
    +🛤 railway track; U+1F6E4
    +🛢 oil drum; U+1F6E2
    +⛽ fuel pump; U+26FD
    +🚨 police car light; U+1F6A8
    +🚥 horizontal traffic light; U+1F6A5
    +🚦 vertical traffic light; U+1F6A6
    +🛑 stop sign; U+1F6D1
    +🚧 construction; U+1F6A7
    +⚓ anchor; U+2693
    +⛵ sailboat; U+26F5
    +🛶 canoe; U+1F6F6
    +🚤 speedboat; U+1F6A4
    +🛳 passenger ship; U+1F6F3
    +⛴ ferry; U+26F4
    +🛥 motor boat; U+1F6E5
    +🚢 ship; U+1F6A2
    +✈ airplane; U+2708
    +🛩 small airplane; U+1F6E9
    +🛫 airplane departure; U+1F6EB
    +🛬 airplane arrival; U+1F6EC
    +💺 seat; U+1F4BA
    +🚁 helicopter; U+1F681
    +🚟 suspension railway; U+1F69F
    +🚠 mountain cableway; U+1F6A0
    +🚡 aerial tramway; U+1F6A1
    +🛰 satellite; U+1F6F0
    +🚀 rocket; U+1F680
    +🛸 flying saucer; U+1F6F8
    +🛎 bellhop bell; U+1F6CE
    +🧳 luggage; U+1F9F3
    +⌛ hourglass done; U+231B
    +⏳ hourglass not done; U+23F3
    +⌚ watch; U+231A
    +⏰ alarm clock; U+23F0
    +⏱ stopwatch; U+23F1
    +⏲ timer clock; U+23F2
    +🕰 mantelpiece clock; U+1F570
    +🕛 twelve o’clock; U+1F55B
    +🕧 twelve-thirty; U+1F567
    +🕐 one o’clock; U+1F550
    +🕜 one-thirty; U+1F55C
    +🕑 two o’clock; U+1F551
    +🕝 two-thirty; U+1F55D
    +🕒 three o’clock; U+1F552
    +🕞 three-thirty; U+1F55E
    +🕓 four o’clock; U+1F553
    +🕟 four-thirty; U+1F55F
    +🕔 five o’clock; U+1F554
    +🕠 five-thirty; U+1F560
    +🕕 six o’clock; U+1F555
    +🕡 six-thirty; U+1F561
    +🕖 seven o’clock; U+1F556
    +🕢 seven-thirty; U+1F562
    +🕗 eight o’clock; U+1F557
    +🕣 eight-thirty; U+1F563
    +🕘 nine o’clock; U+1F558
    +🕤 nine-thirty; U+1F564
    +🕙 ten o’clock; U+1F559
    +🕥 ten-thirty; U+1F565
    +🕚 eleven o’clock; U+1F55A
    +🕦 eleven-thirty; U+1F566
    +🌑 new moon; U+1F311
    +🌒 waxing crescent moon; U+1F312
    +🌓 first quarter moon; U+1F313
    +🌔 waxing gibbous moon; U+1F314
    +🌕 full moon; U+1F315
    +🌖 waning gibbous moon; U+1F316
    +🌗 last quarter moon; U+1F317
    +🌘 waning crescent moon; U+1F318
    +🌙 crescent moon; U+1F319
    +🌚 new moon face; U+1F31A
    +🌛 first quarter moon face; U+1F31B
    +🌜 last quarter moon face; U+1F31C
    +🌡 thermometer; U+1F321
    +☀ sun; U+2600
    +🌝 full moon face; U+1F31D
    +🌞 sun with face; U+1F31E
    +⭐ star; U+2B50
    +🌟 glowing star; U+1F31F
    +🌠 shooting star; U+1F320
    +☁ cloud; U+2601
    +⛅ sun behind cloud; U+26C5
    +⛈ cloud with lightning and rain; U+26C8
    +🌤 sun behind small cloud; U+1F324
    +🌥 sun behind large cloud; U+1F325
    +🌦 sun behind rain cloud; U+1F326
    +🌧 cloud with rain; U+1F327
    +🌨 cloud with snow; U+1F328
    +🌩 cloud with lightning; U+1F329
    +🌪 tornado; U+1F32A
    +🌫 fog; U+1F32B
    +🌬 wind face; U+1F32C
    +🌀 cyclone; U+1F300
    +🌈 rainbow; U+1F308
    +🌂 closed umbrella; U+1F302
    +☂ umbrella; U+2602
    +☔ umbrella with rain drops; U+2614
    +⛱ umbrella on ground; U+26F1
    +⚡ high voltage; U+26A1
    +❄ snowflake; U+2744
    +☃ snowman; U+2603
    +⛄ snowman without snow; U+26C4
    +☄ comet; U+2604
    +🔥 fire; U+1F525
    +💧 droplet; U+1F4A7
    +🌊 water wave; U+1F30A
    +🎃 jack-o-lantern; U+1F383
    +🎄 Christmas tree; U+1F384
    +🎆 fireworks; U+1F386
    +🎇 sparkler; U+1F387
    +🧨 firecracker; U+1F9E8
    +✨ sparkles; U+2728
    +🎈 balloon; U+1F388
    +🎉 party popper; U+1F389
    +🎊 confetti ball; U+1F38A
    +🎋 tanabata tree; U+1F38B
    +🎍 pine decoration; U+1F38D
    +🎎 Japanese dolls; U+1F38E
    +🎏 carp streamer; U+1F38F
    +🎐 wind chime; U+1F390
    +🎑 moon viewing ceremony; U+1F391
    +🧧 red envelope; U+1F9E7
    +🎀 ribbon; U+1F380
    +🎁 wrapped gift; U+1F381
    +🎗 reminder ribbon; U+1F397
    +🎟 admission tickets; U+1F39F
    +🎫 ticket; U+1F3AB
    +🎖 military medal; U+1F396
    +🏆 trophy; U+1F3C6
    +🏅 sports medal; U+1F3C5
    +1st place medal; U+1F947 🥇
    +2nd place medal; U+1F948 🥈
    +3rd place medal; U+1F949 🥉
    +⚽ soccer ball; U+26BD
    +⚾ baseball; U+26BE
    +🥎 softball; U+1F94E
    +🏀 basketball; U+1F3C0
    +🏐 volleyball; U+1F3D0
    +🏈 american football; U+1F3C8
    +🏉 rugby football; U+1F3C9
    +🎾 tennis; U+1F3BE
    +🥏 flying disc; U+1F94F
    +🎳 bowling; U+1F3B3
    +🏏 cricket game; U+1F3CF
    +🏑 field hockey; U+1F3D1
    +🏒 ice hockey; U+1F3D2
    +🥍 lacrosse; U+1F94D
    +🏓 ping pong; U+1F3D3
    +🏸 badminton; U+1F3F8
    +🥊 boxing glove; U+1F94A
    +🥋 martial arts uniform; U+1F94B
    +🥅 goal net; U+1F945
    +⛳ flag in hole; U+26F3
    +⛸ ice skate; U+26F8
    +🎣 fishing pole; U+1F3A3
    +🎽 running shirt; U+1F3BD
    +🎿 skis; U+1F3BF
    +🛷 sled; U+1F6F7
    +🥌 curling stone; U+1F94C
    +🎯 direct hit; U+1F3AF
    +🎱 pool 8 ball; U+1F3B1
    +🔮 crystal ball; U+1F52E
    +🧿 nazar amulet; U+1F9FF
    +🎮 video game; U+1F3AE
    +🕹 joystick; U+1F579
    +🎰 slot machine; U+1F3B0
    +🎲 game die; U+1F3B2
    +🧩 jigsaw; U+1F9E9
    +🧸 teddy bear; U+1F9F8
    +♠ spade suit; U+2660
    +♥ heart suit; U+2665
    +♦ diamond suit; U+2666
    +♣ club suit; U+2663
    +♟ chess pawn; U+265F
    +🃏 joker; U+1F0CF
    +🀄 mahjong red dragon; U+1F004
    +🎴 flower playing cards; U+1F3B4
    +🎭 performing arts; U+1F3AD
    +🖼 framed picture; U+1F5BC
    +🎨 artist palette; U+1F3A8
    +🧵 thread; U+1F9F5
    +🧶 yarn; U+1F9F6
    +👓 glasses; U+1F453
    +🕶 sunglasses; U+1F576
    +🥽 goggles; U+1F97D
    +🥼 lab coat; U+1F97C
    +👔 necktie; U+1F454
    +👕 t-shirt; U+1F455
    +👖 jeans; U+1F456
    +🧣 scarf; U+1F9E3
    +🧤 gloves; U+1F9E4
    +🧥 coat; U+1F9E5
    +🧦 socks; U+1F9E6
    +👗 dress; U+1F457
    +👘 kimono; U+1F458
    +👙 bikini; U+1F459
    +👚 woman’s clothes; U+1F45A
    +👛 purse; U+1F45B
    +👜 handbag; U+1F45C
    +👝 clutch bag; U+1F45D
    +🛍 shopping bags; U+1F6CD
    +🎒 backpack; U+1F392
    +👞 man’s shoe; U+1F45E
    +👟 running shoe; U+1F45F
    +🥾 hiking boot; U+1F97E
    +🥿 flat shoe; U+1F97F
    +👠 high-heeled shoe; U+1F460
    +👡 woman’s sandal; U+1F461
    +👢 woman’s boot; U+1F462
    +👑 crown; U+1F451
    +👒 woman’s hat; U+1F452
    +🎩 top hat; U+1F3A9
    +🎓 graduation cap; U+1F393
    +🧢 billed cap; U+1F9E2
    +⛑ rescue worker’s helmet; U+26D1
    +📿 prayer beads; U+1F4FF
    +💄 lipstick; U+1F484
    +💍 ring; U+1F48D
    +💎 gem stone; U+1F48E
    +🔇 muted speaker; U+1F507
    +🔈 speaker low volume; U+1F508
    +🔉 speaker medium volume; U+1F509
    +🔊 speaker high volume; U+1F50A
    +📢 loudspeaker; U+1F4E2
    +📣 megaphone; U+1F4E3
    +📯 postal horn; U+1F4EF
    +🔔 bell; U+1F514
    +🔕 bell with slash; U+1F515
    +🎼 musical score; U+1F3BC
    +🎵 musical note; U+1F3B5
    +🎶 musical notes; U+1F3B6
    +🎙 studio microphone; U+1F399
    +🎚 level slider; U+1F39A
    +🎛 control knobs; U+1F39B
    +🎤 microphone; U+1F3A4
    +🎧 headphone; U+1F3A7
    +📻 radio; U+1F4FB
    +🎷 saxophone; U+1F3B7
    +🎸 guitar; U+1F3B8
    +🎹 musical keyboard; U+1F3B9
    +🎺 trumpet; U+1F3BA
    +🎻 violin; U+1F3BB
    +🥁 drum; U+1F941
    +📱 mobile phone; U+1F4F1
    +📲 mobile phone with arrow; U+1F4F2
    +☎ telephone; U+260E
    +📞 telephone receiver; U+1F4DE
    +📟 pager; U+1F4DF
    +📠 fax machine; U+1F4E0
    +🔋 battery; U+1F50B
    +🔌 electric plug; U+1F50C
    +💻 laptop computer; U+1F4BB
    +🖥 desktop computer; U+1F5A5
    +🖨 printer; U+1F5A8
    +⌨ keyboard; U+2328
    +🖱 computer mouse; U+1F5B1
    +🖲 trackball; U+1F5B2
    +💽 computer disk; U+1F4BD
    +💾 floppy disk; U+1F4BE
    +💿 optical disk; U+1F4BF
    +📀 dvd; U+1F4C0
    +🧮 abacus; U+1F9EE
    +🎥 movie camera; U+1F3A5
    +🎞 film frames; U+1F39E
    +📽 film projector; U+1F4FD
    +🎬 clapper board; U+1F3AC
    +📺 television; U+1F4FA
    +📷 camera; U+1F4F7
    +📸 camera with flash; U+1F4F8
    +📹 video camera; U+1F4F9
    +📼 videocassette; U+1F4FC
    +🔍 magnifying glass tilted left; U+1F50D
    +🔎 magnifying glass tilted right; U+1F50E
    +🕯 candle; U+1F56F
    +💡 light bulb; U+1F4A1
    +🔦 flashlight; U+1F526
    +🏮 red paper lantern; U+1F3EE
    +📔 notebook with decorative cover; U+1F4D4
    +📕 closed book; U+1F4D5
    +📖 open book; U+1F4D6
    +📗 green book; U+1F4D7
    +📘 blue book; U+1F4D8
    +📙 orange book; U+1F4D9
    +📚 books; U+1F4DA
    +📓 notebook; U+1F4D3
    +📒 ledger; U+1F4D2
    +📃 page with curl; U+1F4C3
    +📜 scroll; U+1F4DC
    +📄 page facing up; U+1F4C4
    +📰 newspaper; U+1F4F0
    +🗞 rolled-up newspaper; U+1F5DE
    +📑 bookmark tabs; U+1F4D1
    +🔖 bookmark; U+1F516
    +🏷 label; U+1F3F7
    +💰 money bag; U+1F4B0
    +💴 yen banknote; U+1F4B4
    +💵 dollar banknote; U+1F4B5
    +💶 euro banknote; U+1F4B6
    +💷 pound banknote; U+1F4B7
    +💸 money with wings; U+1F4B8
    +💳 credit card; U+1F4B3
    +🧾 receipt; U+1F9FE
    +💹 chart increasing with yen; U+1F4B9
    +💱 currency exchange; U+1F4B1
    +💲 heavy dollar sign; U+1F4B2
    +✉ envelope; U+2709
    +📧 e-mail; U+1F4E7
    +📨 incoming envelope; U+1F4E8
    +📩 envelope with arrow; U+1F4E9
    +📤 outbox tray; U+1F4E4
    +📥 inbox tray; U+1F4E5
    +📦 package; U+1F4E6
    +📫 closed mailbox with raised flag; U+1F4EB
    +📪 closed mailbox with lowered flag; U+1F4EA
    +📬 open mailbox with raised flag; U+1F4EC
    +📭 open mailbox with lowered flag; U+1F4ED
    +📮 postbox; U+1F4EE
    +🗳 ballot box with ballot; U+1F5F3
    +✏ pencil; U+270F
    +✒ black nib; U+2712
    +🖋 fountain pen; U+1F58B
    +🖊 pen; U+1F58A
    +🖌 paintbrush; U+1F58C
    +🖍 crayon; U+1F58D
    +📝 memo; U+1F4DD
    +💼 briefcase; U+1F4BC
    +📁 file folder; U+1F4C1
    +📂 open file folder; U+1F4C2
    +🗂 card index dividers; U+1F5C2
    +📅 calendar; U+1F4C5
    +📆 tear-off calendar; U+1F4C6
    +🗒 spiral notepad; U+1F5D2
    +🗓 spiral calendar; U+1F5D3
    +📇 card index; U+1F4C7
    +📈 chart increasing; U+1F4C8
    +📉 chart decreasing; U+1F4C9
    +📊 bar chart; U+1F4CA
    +📋 clipboard; U+1F4CB
    +📌 pushpin; U+1F4CC
    +📍 round pushpin; U+1F4CD
    +📎 paperclip; U+1F4CE
    +🖇 linked paperclips; U+1F587
    +📏 straight ruler; U+1F4CF
    +📐 triangular ruler; U+1F4D0
    +✂ scissors; U+2702
    +🗃 card file box; U+1F5C3
    +🗄 file cabinet; U+1F5C4
    +🗑 wastebasket; U+1F5D1
    +🔒 locked; U+1F512
    +🔓 unlocked; U+1F513
    +🔏 locked with pen; U+1F50F
    +🔐 locked with key; U+1F510
    +🔑 key; U+1F511
    +🗝 old key; U+1F5DD
    +🔨 hammer; U+1F528
    +⛏ pick; U+26CF
    +⚒ hammer and pick; U+2692
    +🛠 hammer and wrench; U+1F6E0
    +🗡 dagger; U+1F5E1
    +⚔ crossed swords; U+2694
    +🔫 pistol; U+1F52B
    +🏹 bow and arrow; U+1F3F9
    +🛡 shield; U+1F6E1
    +🔧 wrench; U+1F527
    +🔩 nut and bolt; U+1F529
    +⚙ gear; U+2699
    +🗜 clamp; U+1F5DC
    +⚖ balance scale; U+2696
    +🔗 link; U+1F517
    +⛓ chains; U+26D3
    +🧰 toolbox; U+1F9F0
    +🧲 magnet; U+1F9F2
    +⚗ alembic; U+2697
    +🧪 test tube; U+1F9EA
    +🧫 petri dish; U+1F9EB
    +🧬 dna; U+1F9EC
    +🔬 microscope; U+1F52C
    +🔭 telescope; U+1F52D
    +📡 satellite antenna; U+1F4E1
    +💉 syringe; U+1F489
    +💊 pill; U+1F48A
    +🚪 door; U+1F6AA
    +🛏 bed; U+1F6CF
    +🛋 couch and lamp; U+1F6CB
    +🚽 toilet; U+1F6BD
    +🚿 shower; U+1F6BF
    +🛁 bathtub; U+1F6C1
    +🧴 lotion bottle; U+1F9F4
    +🧷 safety pin; U+1F9F7
    +🧹 broom; U+1F9F9
    +🧺 basket; U+1F9FA
    +🧻 roll of paper; U+1F9FB
    +🧼 soap; U+1F9FC
    +🧽 sponge; U+1F9FD
    +🧯 fire extinguisher; U+1F9EF
    +🛒 shopping cart; U+1F6D2
    +🚬 cigarette; U+1F6AC
    +⚰ coffin; U+26B0
    +⚱ funeral urn; U+26B1
    +🗿 moai; U+1F5FF
    +🏧 ATM sign; U+1F3E7
    +🚮 litter in bin sign; U+1F6AE
    +🚰 potable water; U+1F6B0
    +♿ wheelchair symbol; U+267F
    +🚹 men’s room; U+1F6B9
    +🚺 women’s room; U+1F6BA
    +🚻 restroom; U+1F6BB
    +🚼 baby symbol; U+1F6BC
    +🚾 water closet; U+1F6BE
    +🛂 passport control; U+1F6C2
    +🛃 customs; U+1F6C3
    +🛄 baggage claim; U+1F6C4
    +🛅 left luggage; U+1F6C5
    +⚠ warning; U+26A0
    +🚸 children crossing; U+1F6B8
    +⛔ no entry; U+26D4
    +🚫 prohibited; U+1F6AB
    +🚳 no bicycles; U+1F6B3
    +🚭 no smoking; U+1F6AD
    +🚯 no littering; U+1F6AF
    +🚱 non-potable water; U+1F6B1
    +🚷 no pedestrians; U+1F6B7
    +📵 no mobile phones; U+1F4F5
    +🔞 no one under eighteen; U+1F51E
    +☢ radioactive; U+2622
    +☣ biohazard; U+2623
    +⬆ up arrow; U+2B06
    +↗ up-right arrow; U+2197
    +➡ right arrow; U+27A1
    +↘ down-right arrow; U+2198
    +⬇ down arrow; U+2B07
    +↙ down-left arrow; U+2199
    +⬅ left arrow; U+2B05
    +↖ up-left arrow; U+2196
    +↕ up-down arrow; U+2195
    +↔ left-right arrow; U+2194
    +↩ right arrow curving left; U+21A9
    +↪ left arrow curving right; U+21AA
    +⤴ right arrow curving up; U+2934
    +⤵ right arrow curving down; U+2935
    +🔃 clockwise vertical arrows; U+1F503
    +🔄 counterclockwise arrows button; U+1F504
    +🔙 BACK arrow; U+1F519
    +🔚 END arrow; U+1F51A
    +🔛 ON! arrow; U+1F51B
    +🔜 SOON arrow; U+1F51C
    +🔝 TOP arrow; U+1F51D
    +🛐 place of worship; U+1F6D0
    +⚛ atom symbol; U+269B
    +🕉 om; U+1F549
    +✡ star of David; U+2721
    +☸ wheel of dharma; U+2638
    +☯ yin yang; U+262F
    +✝ latin cross; U+271D
    +☦ orthodox cross; U+2626
    +☪ star and crescent; U+262A
    +☮ peace symbol; U+262E
    +🕎 menorah; U+1F54E
    +🔯 dotted six-pointed star; U+1F52F
    +♈ Aries; U+2648
    +♉ Taurus; U+2649
    +♊ Gemini; U+264A
    +♋ Cancer; U+264B
    +♌ Leo; U+264C
    +♍ Virgo; U+264D
    +♎ Libra; U+264E
    +♏ Scorpio; U+264F
    +♐ Sagittarius; U+2650
    +♑ Capricorn; U+2651
    +♒ Aquarius; U+2652
    +♓ Pisces; U+2653
    +⛎ Ophiuchus; U+26CE
    +🔀 shuffle tracks button; U+1F500
    +🔁 repeat button; U+1F501
    +🔂 repeat single button; U+1F502
    +▶ play button; U+25B6
    +⏩ fast-forward button; U+23E9
    +⏭ next track button; U+23ED
    +⏯ play or pause button; U+23EF
    +◀ reverse button; U+25C0
    +⏪ fast reverse button; U+23EA
    +⏮ last track button; U+23EE
    +🔼 upwards button; U+1F53C
    +⏫ fast up button; U+23EB
    +🔽 downwards button; U+1F53D
    +⏬ fast down button; U+23EC
    +⏸ pause button; U+23F8
    +⏹ stop button; U+23F9
    +⏺ record button; U+23FA
    +⏏ eject button; U+23CF
    +🎦 cinema; U+1F3A6
    +🔅 dim button; U+1F505
    +🔆 bright button; U+1F506
    +📶 antenna bars; U+1F4F6
    +📳 vibration mode; U+1F4F3
    +📴 mobile phone off; U+1F4F4
    +♀ female sign; U+2640
    +♂ male sign; U+2642
    +⚕ medical symbol; U+2695
    +♾ infinity; U+267E
    +♻ recycling symbol; U+267B
    +⚜ fleur-de-lis; U+269C
    +🔱 trident emblem; U+1F531
    +📛 name badge; U+1F4DB
    +🔰 Japanese symbol for beginner; U+1F530
    +⭕ heavy large circle; U+2B55
    +✅ white heavy check mark; U+2705
    +☑ ballot box with check; U+2611
    +✔ heavy check mark; U+2714
    +✖ heavy multiplication x; U+2716
    +❌ cross mark; U+274C
    +❎ cross mark button; U+274E
    +➕ heavy plus sign; U+2795
    +➖ heavy minus sign; U+2796
    +➗ heavy division sign; U+2797
    +➰ curly loop; U+27B0
    +➿ double curly loop; U+27BF
    +〽 part alternation mark; U+303D
    +✳ eight-spoked asterisk; U+2733
    +✴ eight-pointed star; U+2734
    +❇ sparkle; U+2747
    +‼ double exclamation mark; U+203C
    +⁉ exclamation question mark; U+2049
    +❓ question mark; U+2753
    +❔ white question mark; U+2754
    +❕ white exclamation mark; U+2755
    +❗ exclamation mark; U+2757
    +〰 wavy dash; U+3030
    +© copyright; U+00A9
    +® registered; U+00AE
    +™ trade mark; U+2122
    +#️⃣ keycap: #; U+0023 U+FE0F U+20E3
    +*️⃣ keycap: *; U+002A U+FE0F U+20E3
    +0️⃣ keycap: 0; U+0030 U+FE0F U+20E3
    +1️⃣ keycap: 1; U+0031 U+FE0F U+20E3
    +2️⃣ keycap: 2; U+0032 U+FE0F U+20E3
    +3️⃣ keycap: 3; U+0033 U+FE0F U+20E3
    +4️⃣ keycap: 4; U+0034 U+FE0F U+20E3
    +5️⃣ keycap: 5; U+0035 U+FE0F U+20E3
    +6️⃣ keycap: 6; U+0036 U+FE0F U+20E3
    +7️⃣ keycap: 7; U+0037 U+FE0F U+20E3
    +8️⃣ keycap: 8; U+0038 U+FE0F U+20E3
    +9️⃣ keycap: 9; U+0039 U+FE0F U+20E3
    +🔟 keycap: 10; U+1F51F
    +🔠 input latin uppercase; U+1F520
    +🔡 input latin lowercase; U+1F521
    +🔢 input numbers; U+1F522
    +🔣 input symbols; U+1F523
    +🔤 input latin letters; U+1F524
    +🅰 A button (blood type); U+1F170
    +🆎 AB button (blood type); U+1F18E
    +🅱 B button (blood type); U+1F171
    +🆑 CL button; U+1F191
    +🆒 COOL button; U+1F192
    +🆓 FREE button; U+1F193
    +ℹ information; U+2139
    +🆔 ID button; U+1F194
    +Ⓜ circled M; U+24C2
    +🆕 NEW button; U+1F195
    +🆖 NG button; U+1F196
    +🅾 O button (blood type); U+1F17E
    +🆗 OK button; U+1F197
    +🅿 P button; U+1F17F
    +🆘 SOS button; U+1F198
    +🆙 UP! button; U+1F199
    +🆚 VS button; U+1F19A
    +🈁 Japanese “here” button; U+1F201
    +🈂 Japanese “service charge” button; U+1F202
    +🈷 Japanese “monthly amount” button; U+1F237
    +🈶 Japanese “not free of charge” button; U+1F236
    +🈯 Japanese “reserved” button; U+1F22F
    +🉐 Japanese “bargain” button; U+1F250
    +🈹 Japanese “discount” button; U+1F239
    +🈚 Japanese “free of charge” button; U+1F21A
    +🈲 Japanese “prohibited” button; U+1F232
    +🉑 Japanese “acceptable” button; U+1F251
    +🈸 Japanese “application” button; U+1F238
    +🈴 Japanese “passing grade” button; U+1F234
    +🈳 Japanese “vacancy” button; U+1F233
    +㊗ Japanese “congratulations” button; U+3297
    +㊙ Japanese “secret” button; U+3299
    +🈺 Japanese “open for business” button; U+1F23A
    +🈵 Japanese “no vacancy” button; U+1F235
    +🔴 red circle; U+1F534
    +🔵 blue circle; U+1F535
    +⚪ white circle; U+26AA
    +⚫ black circle; U+26AB
    +⬜ white large square; U+2B1C
    +⬛ black large square; U+2B1B
    +◼ black medium square; U+25FC
    +◻ white medium square; U+25FB
    +◽ white medium-small square; U+25FD
    +◾ black medium-small square; U+25FE
    +▫ white small square; U+25AB
    +▪ black small square; U+25AA
    +🔶 large orange diamond; U+1F536
    +🔷 large blue diamond; U+1F537
    +🔸 small orange diamond; U+1F538
    +🔹 small blue diamond; U+1F539
    +🔺 red triangle pointed up; U+1F53A
    +🔻 red triangle pointed down; U+1F53B
    +💠 diamond with a dot; U+1F4A0
    +🔘 radio button; U+1F518
    +🔲 black square button; U+1F532
    +🔳 white square button; U+1F533
    +🏁 chequered flag; U+1F3C1
    +🚩 triangular flag; U+1F6A9
    +🎌 crossed flags; U+1F38C
    +🏴 black flag; U+1F3F4
    +🏳 white flag; U+1F3F3
    +🏳️‍🌈 rainbow flag; U+1F3F3 U+FE0F U+200D U+1F308
    +🏴‍☠️ pirate flag; U+1F3F4 U+200D U+2620 U+FE0F
     
    @@ -2924,7 +5125,7 @@

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:39

    diff --git a/docs/doom.html b/docs/doom.html index 318d013..3e8edda 100644 --- a/docs/doom.html +++ b/docs/doom.html @@ -1,229 +1,19 @@ - - + - Doom Emacs Configuration - -
    @@ -236,22 +26,32 @@

    Table of Contents

    @@ -477,13 +193,22 @@ Documentation:
  • https://github.com/hlissner/doom-emacs/blob/develop/docs/index.org
  • +

    +When changing init.el or package.el, tangle the files and then run doom sync. +After that, restart Emacs with spc q r. +

    +

    Useful Bindings

    • align-regexp: equivalent of vim-easy-align. Very useful to align tables and stuff
    +
    +
    +

    General Bindings

    +
    @@ -619,8 +344,12 @@ Documentation:
    +
    +
    - +
    +

    Org-Babel Bindings

    +
    @@ -631,112 +360,112 @@ Documentation: - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -744,61 +473,99 @@ Documentation: -
    -

    Personal Information

    -
    +
    +

    Evil bindings

    +
    +
    C-c C-v pC-c C-v p org-babel-previous-src-block
    C-c C-v nC-c C-v n org-babel-next-src-block
    C-c C-v eC-c C-v e org-babel-execute-maybe
    C-c C-v oC-c C-v o org-babel-open-src-block-result
    C-c C-v vC-c C-v v org-babel-expand-src-block
    C-c C-v uC-c C-v u org-babel-goto-src-block-head
    C-c C-v gC-c C-v g org-babel-goto-named-src-block
    C-c C-v rC-c C-v r org-babel-goto-named-result
    C-c C-v bC-c C-v b org-babel-execute-buffer
    C-c C-v sC-c C-v s org-babel-execute-subtree
    C-c C-v dC-c C-v d org-babel-demarcate-block
    C-c C-v tC-c C-v t org-babel-tangle
    C-c C-v fC-c C-v f org-babel-tangle-file
    C-c C-v cC-c C-v c org-babel-check-src-block
    C-c C-v jC-c C-v j org-babel-insert-header-arg
    C-c C-v lC-c C-v l org-babel-load-in-session
    C-c C-v iC-c C-v i org-babel-lob-ingest
    C-c C-v IC-c C-v I org-babel-view-src-block-info
    C-c C-v zC-c C-v z org-babel-switch-to-session-with-code
    C-c C-v aC-c C-v a org-babel-sha1-hash
    C-c C-v hC-c C-v h org-babel-describe-bindings
    C-c C-v xC-c C-v x org-babel-do-key-sequence-in-edit-buffer
    + + +++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    gvSelects the previous visual
    o in visual modego to the `Other` end of the selection
    g= and g-Increase/decrement number
    t followed by any chargoes “till” next character (not included)
    f followed by any char“find” next character (included)
    yt.yank until next .
    +
    +
    +
    + +
    +

    Basic Configuration

    +
    +
    +
    +

    Personal Information

    +
    -
    ;; These are used for a number of things, particularly for GPG configuration,
    -;; some email clients, file templates and snippets.
    -(setq user-full-name "Dehaeze Thomas"
    -      user-mail-address "dehaeze.thomas@gmail.com")
    +
    ;; These are used for a number of things, particularly for GPG configuration,
    +;; some email clients, file templates and snippets.
    +(setq user-full-name "Dehaeze Thomas"
    +      user-mail-address "dehaeze.thomas@gmail.com")
     
    -
    -

    Doom Config

    -
    +
    +

    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))
     
    -
    ;; There are two ways to load a theme. Both assume the theme is installed and
    -;; available. You can either set `doom-theme' or manually load a theme with the
    -;; `load-theme' function. These are the defaults.
    -(setq doom-theme 'doom-gruvbox)
    +
    (setq doom-theme 'doom-gruvbox)
     
    -
    (setq display-line-numbers-type t)
    +
    (setq display-line-numbers-type t)
     
    -
    -

    Evil

    -
    +
    +

    Evil

    +
    -
    (after! evil
    -    (map! :m  "-"  #'dired-jump))
    -
    -
    - -
    -
    (map!
    - (:after evil
    -   :en "C-h"   #'evil-window-left
    -   :en "C-j"   #'evil-window-down
    -   :en "C-k"   #'evil-window-up
    -   :en "C-l"   #'evil-window-right))
    +
    (after! evil
    +  (map! :m  "-"  #'dired-jump))
     
    @@ -806,10 +573,10 @@ Documentation: 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)
     
    @@ -817,29 +584,25 @@ Make movement keys work like they should Make horizontal movement cross lines

    -
    (setq-default evil-cross-lines t)
    +
    (setq-default evil-cross-lines t)
     
    -
    -

    Which Key

    -
    +
    +

    Which Key

    +
    -
    (after! which-key
    -  (setq which-key-idle-delay 0.5
    -        which-key-idle-secondary-delay 0.01
    -        which-key-sort-order 'which-key-key-order-alpha))
    +
    (after! which-key
    +  (setq which-key-idle-delay 0.5
    +        which-key-idle-secondary-delay 0.01
    +        which-key-sort-order 'which-key-key-order-alpha))
     
    -
    -

    Basic

    -
    -

    Visual

    @@ -847,7 +610,7 @@ Make horizontal movement cross lines Automatic line wrap.

    -
    (global-visual-line-mode nil)
    +
    (global-visual-line-mode nil)
     
    @@ -855,13 +618,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)
    -;; turn on auto-fill for text-mode
    -(add-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))
    +
    (auto-fill-mode -1)
    +(remove-hook 'text-mode-hook 'turn-on-auto-fill)
    +;; turn on auto-fill for text-mode
    +(add-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))
     
    @@ -871,7 +634,7 @@ Turn off auto-fill mode that add line breaks.

    Change default alert backend

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

    Lockfiles

    -
    (setq create-lockfiles nil)
    +
    (setq create-lockfiles nil)
     
    @@ -891,14 +654,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
    +  ))
     
    @@ -908,31 +671,112 @@ 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))
     
    -
    -
    -

    Magit

    -
    +
    +

    Magit

    +
    -
    (setenv "GIT_ASKPASS" "git-gui--askpass")
    +
    (setenv "GIT_ASKPASS" "git-gui--askpass")
     
    -(setq magit-diff-refine-hunk 'all)
    +(setq magit-diff-refine-hunk 'all)
     
    -
    -

    Org Mode

    -
    +
    +

    Dired

    +
    +
      +
    • C-c C-e Writable Dired mode, when changes are done C-c C-c. +This works also with C-x C-q
    • +
    • C-c C-r use rsync to copy file in the background
    • + +
    • + Create a directory
    • +
    • R Rename / move
    • +
    • C Copy
    • +
    • d Delete
    • +
    • m Mark
    • +
    • U unmark all marked
    • +
    • t invert the selection
    • +
    • u unmark / undelete
    • +
    • x actually delete files/directories marked for deletion
    • +
    • ! Execute shell command on this file, or currently marked files
    • +
    • %m mark by pattern
    • +
    • o sort by time/name
    • + +
    • ( Hide details
    • +
    • ) Show git infos
    • +
    + + +
    +
    (use-package! dired-narrow
    +  :config
    +  (map! :map dired-mode-map
    +        :n "f"
    +        'dired-narrow-fuzzy))
    +
    +
    +
    +
    + +
    +

    PDF-Tools

    +
    +
    +
    (use-package! pdf-tools
    +  :config
    +  (add-hook 'pdf-view-mode-hook (lambda() (linum-mode -1)))
    +  )
    +
    +
    +
    +
    + +
    +

    Yassnippets

    +
    +
    +
    (push "~/.config/doom/snippets" yas-snippet-dirs)
    +(yas-global-mode 1)
    +
    +
    +
    +
    + +
    +

    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))
    +
    +  (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))))
    +
    +
    +
    +
    +
    + +
    +

    Org Mode

    +
    • http://cachestocaches.com/2016/9/my-workflow-org-agenda/
    • http://doc.norang.ca/org-mode.html#TodoKeywords
    • @@ -944,29 +788,31 @@ Turn off auto-fill mode that add line breaks.

      Org General Config

      -
      (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)
      +  ;; 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)
      +)
       
      @@ -974,8 +820,8 @@ Turn off auto-fill mode that add line breaks. 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))
       
      @@ -988,8 +834,8 @@ 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))
       
    @@ -999,14 +845,12 @@ Display the real size of images and not the one set with attr_latex: :widt

    Org Links

    -
    (after! org
    -  (map! :map org-mode-map "C-c l" 'org-store-link)
    -
    -  (setq org-link-abbrev-alist
    -    '(("bib" . "~/Cloud/thesis/ressources/references.bib::%s")
    -      ("notes" . "~/Cloud/thesis/ressources/notes/notes.org::#%s")
    -      ("papers" . "~/Cloud/thesis/ressources/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")))
    +  )
     
    @@ -1016,15 +860,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))))
    +  )
     
    @@ -1034,9 +878,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))))
    +  )
     
    @@ -1046,90 +890,91 @@ 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
    +  )
     
    -
    -

    Archive subtrees under the same hierarchy as original in the archive files

    -
    +
    +

    Org Archive

    +

    https://gist.github.com/Fuco1/e86fb5e0a5bb71ceafccedb5ca22fcfb +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))))
    +
    (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 ?*)
    -                              " "
    +      (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))))))))
    -)
    +                              "\n"))
    +                    (cl-incf level)))
    +                (widen)
    +                (org-end-of-subtree t t)
    +                (org-paste-subtree level tree-text))))))))
    +  )
     
    @@ -1138,134 +983,124 @@ Display the real size of images and not the one set with attr_latex: :widt

    Org Agenda

    -
    -
    -

    General configuration

    -
    -
    -
    (after! org
    -  (map! :map org-mode-map "C-c a" 'org-agenda)
    -
    -  ;; File to save todo items
    -  (setq org-agenda-files (list "~/Cloud/org/"))
    -
    -  ;; Include archived files
    -  (setq org-agenda-archives-mode t)
    -
    -  ;; 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"))))
    -
    -  ;; Open agenda in current window
    -  (setq org-agenda-window-setup 'current-window)
    -
    -  (setq org-agenda-prefix-format
    -      '((agenda  . " %-12:c %?-12t% s")
    -      (todo  . "") ;; Don't show the filename for reading agenda
    -      (tags  . " %-12:c")
    -      (search . " %-12:c"))
    -  )
    -)
    -
    -
    -
    -
    - -
    -

    Org Agenda Custom Views

    -

    -https://blog.aaronbieber.com/2016/09/24/an-agenda-for-life-with-org-mode.html +General configuration

    -
    -
    (after! org-agenda
    -  (defun tdh-org-agenda-skip-scheduled ()
    -    (org-agenda-skip-entry-if 'scheduled 'deadline 'regexp "\n]+>"))
    +
    (after! org
    +  ;; File to save todo items
    +  (setq org-agenda-files (list "~/Cloud/org/"))
     
    -  (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/thesis/ressources/notes/"))))
    -          ("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/thesis/ressources/notes/")))))
    -        )
    -  )
    +  ;; Include archived files
    +  (setq org-agenda-archives-mode t)
    +
    +  ;; 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"))))
    +
    +  ;; Open agenda in current window
    +  (setq org-agenda-window-setup 'current-window)
    +
    +  (setq org-agenda-prefix-format
    +        '((agenda  . " %-12:c %?-12t% s")
    +          (todo  . "") ;; Don't show the filename for reading agenda
    +          (tags  . " %-12:c")
    +          (search . " %-12:c"))
    +        )
    +  )
     
    + +

    +Org Agenda Custom Views +

    +
    +
    (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/")))))
    +        )
    +  )
    +
    @@ -1274,9 +1109,9 @@ Display the real size of images and not the one set with attr_latex: :widt

    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 '("■" "■" "■")))
     
    @@ -1290,25 +1125,25 @@ Display the real size of images and not the one set with attr_latex: :widt

    -
    (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)))))
    +  )
     
    @@ -1317,10 +1152,10 @@ Display the real size of images and not the one set with attr_latex: :widt

    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"
     
    @@ -1331,17 +1166,17 @@ dunstify --replace=85401 Org Structure Template
    -
    (after! org
    -  (setq org-structure-template-alist
    -    '(("c" . "center")
    -      ("C" . "comment")
    -      ("m" . "src matlab\n")
    -      ("l" . "src emacs-lisp\n")
    -      ("i" . "important")
    -      ("e" . "example")
    -      ("q" . "quote")
    -      ("s" . "src")))
    -)
    +
    (after! org
    +  (setq org-structure-template-alist
    +    '(("c" . "center")
    +      ("C" . "comment")
    +      ("m" . "src matlab\n")
    +      ("l" . "src emacs-lisp\n")
    +      ("i" . "important")
    +      ("e" . "example")
    +      ("q" . "quote")
    +      ("s" . "src")))
    +)
     
    @@ -1360,55 +1195,49 @@ Documentation:
    -
    (after! org
    -  (map! :map org-mode-map "C-c c" 'org-capture))
    -
    -
    - -
    -
    (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
    -                  )
    -                  ("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
    +                 )
    +                ("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
    +                 )
    +                )))
    +  )
     
    @@ -1417,147 +1246,125 @@ Documentation:

    Org Export

    -
    -
    -

    Basic

    -
    -
    -
    (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)
    -
    -  (setq org-odt-preferred-output-format "doc")
    -  )
    -
    -
    -
    -
    - -
    -

    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)))
    -
    -
    -
    -
    - -
    -

    Ox Latex Subfigure package

    -
    -
    -
    (use-package! ox-latex-subfigure
    -  :after org
    -  :config (require 'ox-latex-subfigure))
    -
    -
    -
    -
    - -
    -

    Clear page before heading

    -

    -https://emacs.stackexchange.com/questions/30575/adding-latex-newpage-before-a-heading/30892 +Basic configuration:

    -
    -
    (after! org
    -  (defun org/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
    +  ;; How many levels of headline to export
    +  (setq org-export-headline-levels 4)
     
    -  (defun org/ensure-latex-clearpage (headline backend info)
    -      (when (org-export-derived-backend-p backend 'latex)
    -      (let ((elmnt (org/get-headline-string-element headline backend info)))
    -          (when (and elmnt (org-element-property :CLEARPAGE elmnt))
    -          (concat "\\clearpage\n" headline)))))
    +  ;; Authorize BIND to set local variables
    +  (setq org-export-allow-bind-keywords t)
     
    -  (add-to-list 'org-export-filter-headline-functions
    -              'org/ensure-latex-clearpage)
    -  )
    +  ;; Use doc instead of odt
    +  (setq org-odt-preferred-output-format "doc")
    +  )
    +
    +
    + +

    +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)
    +  )
    +
    +
    + +

    +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)))
     
    -
    -

    HTML Export

    -
    +
    +

    HTML Export

    +
    -
    -
    MathJax
    -
    +
    +

    HTML Defaults

    +
    -
    (after! org
    -  (setq org-html-mathjax-template
    -      "<script>
    -      MathJax = {
    -          tex: { macros: {
    -                  bm: [\"\\\\boldsymbol{#1}\",1],
    -                  }
    -              }
    -          };
    -          </script>
    -          <script type=\"text/javascript\"
    -          src=\"%PATH\"></script>")
    -)
    -
    -
    +
    (after! org
    +  ;; (setq org-html-head-extra (concat
    +  ;;                            "<link rel='stylesheet' href='../css/htmlize.css'>\n"
    +  ;;                            "<link rel='stylesheet' href='../css/readtheorg.css'>\n"
    +  ;;                            "<link rel='stylesheet' href='../css/zenburn.css'>\n"
    +  ;;                            "<link rel='text/javascript' href='../js/bootstrap.min.js'>\n"
    +  ;;                            "<link rel='text/javascript' href='../js/jquery.min.js'>\n"
    +  ;;                            "<link rel='text/javascript' href='../js/jquery.stickytableheaders.min.js'>\n"
    +  ;;                            "<link rel='text/javascript' href='../js/readtheorg.js'>\n"))
     
    -
    -
    (after! org
    -  (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")))
    -)
    +  ;; cleans up anything that would have been in there.
    +  (setq org-html-head nil)
    +  (setq org-html-head-include-default-style nil)
    +  (setq org-html-head-include-scripts nil)
    +
    +  (setq org-html-viewport nil)
    +
    +  (setq org-html-html5-fancy t)
    +  (setq org-html-doctype "xhtml-strict")
    +
    +  (setq org-html-wrap-src-lines nil)
    +
    +  ;; Export with css class instead of inline css
    +  (setq org-html-htmlize-output-type 'nil)
    +  )
     
    -
    -
    Export with css class instead of inline css
    -
    +
    +

    MathJax

    +
    -
    (after! org
    -  (setq org-html-htmlize-output-type 'css))
    +
    (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")))
    +  )
     
    -
    -
    TODO MP4 movies
    -
    -
    -
    (after! org
    -  (setq org-html-html5-fancy t)
    -  (setq org-html-doctype "xhtml-strict")
    -)
    -
    -
    -
    -
    - -
    -
    TODO Ensuring useful HTML Anchors
    -
    +
    +

    Ensuring useful HTML Anchors

    +
    • [ ] https://github.com/alhassy/emacs.d
    • [ ] https://github.com/alphapapa/unpackaged.el#export-to-html-with-useful-anchors
    • @@ -1568,150 +1375,149 @@ 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)))
       
    -
    -
    TODO Folded Drawers
    -
    +
    +

    Folded Drawers

    +

    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)
     
    -

    Org LaTeX

    @@ -1721,59 +1527,59 @@ Adapt this from https://github.com/

    LaTeX Fragments

    -
    (after! org
    -  ;; Highligh latex parts in org mode
    -  (setq org-highlight-latex-and-related '(native))
    +
    (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 (0.4 . 0.4)
    -                                           :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 (face-background 'fringe)))
    -)
    +  ;; 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 (face-background 'fringe)))
    +  )
     
    @@ -1783,63 +1589,102 @@ 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
    -             '("scrreprt"
    -               "\\documentclass{scrreprt}"
    -               ("\\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}"))
    -             )
    -)
    +
    (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
    +             '("scrreprt"
    +               "\\documentclass{scrreprt}"
    +               ("\\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}"))
    +             )
    +)
    +
    +
    +
    +
    + +
    +

    Ox Latex Subfigure package

    +
    +
    +
    (use-package! ox-latex-subfigure
    +  :after org
    +  :config (require 'ox-latex-subfigure))
    +
    +
    +
    +
    + +
    +

    Clear page before heading

    +
    +

    +https://emacs.stackexchange.com/questions/30575/adding-latex-newpage-before-a-heading/30892 +

    + +
    +
    (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)))))
    +
    +  (add-to-list 'org-export-filter-headline-functions
    +               'tdh-ensure-latex-clearpage)
    +  )
     
    @@ -1849,15 +1694,14 @@ Adapt this from https://github.com/

    Default added packages

    -
    (after! org
    -  ;; Add packages by default
    -  (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))
    +  )
     
    @@ -1867,26 +1711,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 "")
    +
    (after! org
    +  ;; Setup default option for image size when exporting to LaTeX
    +  (setq org-latex-image-default-scale "")
    +  (setq org-latex-image-default-width "\\linewidth")
    +  (setq org-latex-image-default-height "")
    +  (setq org-latex-image-default-option "")
     
    -  ;; 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)
     
    -  ;; 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"))
    -)
    +  ;; 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"))
    +  )
     
    @@ -1899,16 +1746,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)
    +  )
     
    @@ -1920,91 +1767,76 @@ 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}"
    +                 "}"))
    +  )
     
    -

    TODO Custom Export - Add Page and Label for LaTeX export

    +

    Custom Export - Add Page and Label for LaTeX export

    https://emacs.stackexchange.com/questions/156/emacs-function-to-convert-an-arbitrary-org-property-into-an-arbitrary-string-na?rq=1

    -
    (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 org-latex-format-headline-default-function (todo _todo-type priority text tags _info)
    -  "Default format function for a headline.
    -   See `org-latex-format-headline-function' for details."
    -  (concat
    -   (and todo (format "{\\bfseries\\sffamily %s} " todo))
    -   (and priority (format "\\framebox{\\#%c} " priority))
    -   text
    -   (and tags
    -        (format "\\hfill{}\\textsc{%s}"
    -                (mapconcat #'org-latex--protect-text tags ":")))
    -   (and todo (format "{\n\\page{%s} " todo)))
    +
    (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)))
     
    @@ -2013,51 +1845,55 @@ Special Environments

    Number Equations

    +

    +https://kitchingroup.cheme.cmu.edu/blog/2016/11/07/Better-equation-numbering-in-LaTeX-fragments-in-org-mode/ +

    +
    -
    (after! org
    -  (defun 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 #'org-renumber-environment)
    -)
    +  (advice-add 'org-create-formula-image :around #'tdh-org-renumber-environment)
    +  )
     
    @@ -2072,426 +1908,121 @@ 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#+HTML_HEAD_EXTRA: <div style=\"display: none\"> \\(\n"
    -     (prefix-all-lines "#+HTML_HEAD_EXTRA: " body)
    -     "\n#+HTML_HEAD_EXTRA: \\)</div>\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"))
    +  )
     
    -
    -

    TODO View PDF in org mode

    -
    -
    -
    (defun tdh-org-include-img-from-pdf (&rest _)
    -  "Convert pdf files to image files in org-mode bracket links.
    -    # ()convertfrompdf:t # This is a special comment; tells that the upcoming
    -                         # link points to the to-be-converted-to file.
    -    # If you have a foo.pdf that you need to convert to foo.png, use the
    -    # foo.png file name in the link.
    -    [[./foo.png]]
    -"
    -  (interactive)
    -  (if (executable-find "convert")
    -      (save-excursion
    -        (goto-char (point-min))
    -        (while (re-search-forward "^[ \t]*#\\s-+()convertfrompdf\\s-*:\\s-*t"
    -                                  nil :noerror)
    -          ;; Keep on going to the next line till it finds a line with bracketed
    -          ;; file link.
    -          (while (progn
    -                   (forward-line 1)
    -                   (not (looking-at org-bracket-link-regexp))))
    -          ;; Get the sub-group 1 match, the link, from `org-bracket-link-regexp'
    -          (let ((link (match-string-no-properties 1)))
    -            (when (stringp link)
    -              (let* ((imgfile (expand-file-name (file-name-sans-extension link)))
    -                     (pdffile (expand-file-name
    -                               (concat imgfile
    -                                       "." "pdf")))
    -                     (cmd (concat "pdftocairo -png -transp -singlefile "
    -                                  pdffile " " imgfile)))
    -
    -                (message "%s" imgfile)
    -                (when (and (file-readable-p pdffile)
    -                           (file-newer-than-file-p pdffile imgfile))
    -                  ;; This block is executed only if pdffile is newer than
    -                  ;; imgfile or if imgfile does not exist.
    -                  (shell-command cmd)
    -                  (message "%s" cmd)))))))
    -    (user-error "`convert' executable (part of Imagemagick) is not found")))
    -  (add-hook 'org-export-before-processing-hook #'tdh-org-include-img-from-pdf)
    -
    -
    - -
    -
    (add-to-list 'image-type-file-name-regexps '("\\.pdf\\'" . imagemagick))
    -(add-to-list 'image-file-name-extensions "pdf")
    -(setq imagemagick-types-inhibit (remove 'PDF imagemagick-types-inhibit))
    -
    -
    - -
    -
    (defun tdh-latex-filter-nobreaks (text backend info)
    -  "Ensure \" \" are properly handled in LaTeX export."
    -  (when (org-export-derived-backend-p backend 'latex)
    -    (replace-regexp-in-string " " "~" text)))
    -
    -(add-to-list 'org-export-filter-plain-text-functions
    -            'tdh-latex-filter-nobreaks)
    -
    -
    - -
    -
    (setq image-file-name-extensions
    -   (quote
    -    ("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg" "pdf" "bmp")))
    -
    -(setq org-imagemagick-display-command "convert -density 600 \"%s\" -thumbnail \"%sx%s>\" \"%s\"")
    -(defun org-display-inline-images (&optional include-linked refresh beg end)
    -  "Display inline images.
    -Normally only links without a description part are inlined, because this
    -is how it will work for export.  When INCLUDE-LINKED is set, also links
    -with a description part will be inlined.  This
    -can be nice for a quick
    -look at those images, but it does not reflect what exported files will look
    -like.
    -When REFRESH is set, refresh existing images between BEG and END.
    -This will create new image displays only if necessary.
    -BEG and END default to the buffer boundaries."
    -  (interactive "P")
    -  (unless refresh
    -    (org-remove-inline-images)
    -    (if (fboundp 'clear-image-cache) (clear-image-cache)))
    -  (save-excursion
    -    (save-restriction
    -      (widen)
    -      (setq beg (or beg (point-min)) end (or end (point-max)))
    -      (goto-char beg)
    -      (let ((re (concat "\\[\\[\\(\\(file:\\)\\|\\([./~]\\)\\)\\([^]\n]+?"
    -                        (substring (org-image-file-name-regexp) 0 -2)
    -                        "\\)\\]" (if include-linked "" "\\]")))
    -            old file ov img)
    -        (while (re-search-forward re end t)
    -          (setq old (get-char-property-and-overlay (match-beginning 1)
    -                                                   'org-image-overlay)
    -        file (expand-file-name
    -                      (concat (or (match-string 3) "") (match-string 4))))
    -          (when (file-exists-p file)
    -            (let ((file-thumb (format "%s%s_thumb.png" (file-name-directory file) (file-name-base file))))
    -              (if (file-exists-p file-thumb)
    -                  (let ((thumb-time (nth 5 (file-attributes file-thumb 'string)))
    -                        (file-time (nth 5 (file-attributes file 'string))))
    -                    (if (time-less-p thumb-time file-time)
    -            (shell-command (format org-imagemagick-display-command
    -                           file org-image-actual-width org-image-actual-width file-thumb) nil nil)))
    -                (shell-command (format org-imagemagick-display-command
    -                                         file org-image-actual-width org-image-actual-width file-thumb) nil nil))
    -              (if (and (car-safe old) refresh)
    -                  (image-refresh (overlay-get (cdr old) 'display))
    -                (setq img (save-match-data (create-image file-thumb)))
    -                (when img
    -                  (setq ov (make-overlay (match-beginning 0) (match-end 0)))
    -                  (overlay-put ov 'display img)
    -                  (overlay-put ov 'face 'default)
    -                  (overlay-put ov 'org-image-overlay t)
    -                  (overlay-put ov 'modification-hooks
    -                               (list 'org-display-inline-remove-overlay))
    -                  (push ov org-inline-image-overlays))))))))))
    -
    -
    - -

    -Two options: -

    -
      -
    • work with .png file extension and only replace with .pdf when exporting to LaTeX if the corresponding file exists
    • -
    • work with .pdf file, add a special function to display .pdf files (using convert or pdftocairo). Change to .png when exporting to html
    • -
    - -

    -Let’s try the first solution. -

    - -
    -
    (defun tdh-change-png-to-pdf (text backend info)
    -  "Change png images to pdf images when existing"
    -  (when (org-export-derived-backend-p backend 'latex)
    -    (let ((text (replace-regexp-in-string "[^\\w]\\(:\\)[^\n\t\r]+\\(:\\)[^\\w]" "<mark>"  text nil nil 1 nil)))
    -      (replace-regexp-in-string "[^\\w]\\(<mark>\\)[^\n\t\r]+\\(:\\)[^\\w]" "</mark>" text nil nil 2 nil))))
    -
    -(add-to-list 'org-export-filter-plain-text-fucntions 'tdh-html-mark-tag)
    -
    -
    - -
    -
    (save-excursion
    -        (goto-char (point-min))
    -        (while (re-search-forward "^[ \t]*#\\s-+()convertfrompdf\\s-*:\\s-*t"
    -                                  nil :noerror)
    -          ;; Keep on going to the next line till it finds a line with bracketed
    -          ;; file link.
    -          (while (progn
    -                   (forward-line 1)
    -                   (not (looking-at org-bracket-link-regexp))))
    -          ;; Get the sub-group 1 match, the link, from `org-bracket-link-regexp'
    -          (let ((link (match-string-no-properties 1)))
    -            (when (stringp link)
    -              (let* ((imgfile (expand-file-name link))
    -                     (pdffile (expand-file-name
    -                               (concat (file-name-sans-extension imgfile)
    -                                       "." "pdf")))
    -                     (cmd (concat "convert -density 96 -quality 85 "
    -                                  pdffile " " imgfile)))
    -                (when (and (file-readable-p pdffile)
    -                           (file-newer-than-file-p pdffile imgfile))
    -                  ;; This block is executed only if pdffile is newer than
    -                  ;; imgfile or if imgfile does not exist.
    -                  (shell-command cmd)
    -                  (message "%s" cmd)))))))
    -
    -
    -
    -
    - -
    -

    Org Ref

    -
    -

    -Ressources: -

    - - -

    -Nice Functions: -

    -
      -
    • org-ref-insert-ref-link
    • -
    • org-ref-helm-insert-cite-link
    • -
    • org-ref-list-of-figures
    • -
    • org-ref-find-bad-citations
    • -
    • org-ref-clean-bibtex-entry
    • -
    - -
    -
    (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/thesis/ressources/notes")
    -  (setq org-ref-bibliography-notes "~/Cloud/thesis/ressources/notes")
    -
    -  ;; Bibliography File
    -  (setq reftex-default-bibliography  '("~/Cloud/thesis/ressources/references.bib"))
    -  (setq org-ref-default-bibliography '("~/Cloud/thesis/ressources/references.bib"))
    -
    -  ;; Folder where all the pdf are located
    -  (setq org-ref-pdf-directory "~/Cloud/thesis/ressources/pdfs")
    -
    -  ;; 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)
    -
    -  (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)
    -
    -  (map!
    -   :map org-mode-map
    -   (:desc "Insert Link"
    -     :ni "C-c i" #'org-ref-insert-ref-link))
    -  )
    -
    -
    - -
    -
    (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))))
    -
    -
    -
    -
    - -
    -

    Org Noter

    -
    - - -
    -
    (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)
    -
    -  ;; 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)
    -
    -  ;; 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/thesis/ressources/notes")
    -
    -  (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))
    -  )
    -
    -
    -
    -
    - -
    -

    Org Roam

    -
    -
    -
    (use-package! org-roam
    -  :config
    -  (setq org-roam-directory "~/Cloud/org-roam/")
    -  (setq org-roam-completion-system 'helm)
    -  )
    -
    -
    -
    -
    -

    Org Projects

    -
    (setq org-publish-project-alist
    -      '(("config"
    -         :base-directory "~/.config/literate-dotfiles/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)
    -        ("bibliography"
    -         :base-directory "~/Cloud/thesis/ressources/notes/"
    -         :base-extension "org"
    -         :publishing-directory "~/Cloud/thesis/ressources/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/thesis/latex/org/"
    -         :base-extension "org"
    -         :publishing-directory "~/Cloud/thesis/latex/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/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)))
    +
    +
    +
    +
    + +
    +

    Org big org-project

    +
    +
    +
    (setq org-publish-project-alist
    +      '(("website"
    +         :components ("nass-simscape" "nass-simscape-images"))
    +        ("nass-simscape"
    +         :base-directory "~/Cloud/thesis/matlab/nass-simscape/org/"
    +         :base-extension "org"
    +         :publishing-directory "~/Cloud/website/nass-simscape/"
    +         :publishing-function org-html-publish-to-html
    +
    +         :html-link-up "./index.html"
    +         :html-link-home "~/Cloud/website/index.html"
    +
    +         :html-footnotes-section "<div id='footnotes'><!--%s-->%s</div>"
    +
    +         :recursive nil
    +         :auto-sitemap nil
    +         :language en)
    +        ("nass-simscape-images"
    +         :base-directory "~/Cloud/thesis/matlab/nass-simscape/docs/figs/"
    +         :base-extension "png"
    +         :publishing-directory "~/Cloud/website/nass-simscape/figs/"
    +         :publishing-function org-publish-attachment)
    +        ))
     
    @@ -2501,25 +2032,25 @@ Nice Functions:

    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))
    +
    (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)
    +  )
     
    -

    TODO Insert ScreenShot or Picture from Phone

    +

    Insert ScreenShot or Picture from Phone

    http://pragmaticemacs.com/emacs/a-workflow-to-quickly-add-photos-to-org-mode-notes/ @@ -2531,134 +2062,124 @@ Nice Functions:

    -
    ;; 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 ":")
    +    ;; 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))
    +                      :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)))
     
    -

    TODO Render Tables

    +

    Render Tables

    https://www.reddit.com/r/emacs/comments/d3a8or/pretty_org_tables_in_the_buffer_chapter_2_it/

    -
    (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)))
    -)
    -
    -
    -
    -
    - -
    -

    Org Download

    -
    -
    -
    +  ;; Use F9 to globally generate tables
    +  (map! :map org-mode-map :n "<f8>" (lambda () (interactive) (tdh-render-org-table-at-point)))
    +  )
     
    @@ -2672,26 +2193,95 @@ Nice Functions:
    -
    (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) ))
    +)
     
    -
    -

    Custom Keybindings - , leader key

    -
    +
    +

    Custom Keybindings - , leader key and C-c

    +
    + + + +++ ++ + + + + + + + + + + + + + + + + + + + + + + +
      
    C-c aOrg Agenda
    C-c nNarrow to Subtree
    C-c lOrg Link
    + +
    +
    (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)
    +   ))
    +
    +
    +

    Insert Elements ,i

    @@ -2699,11 +2289,11 @@ Nice Functions: 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/thesis/ressources/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))))
     
    @@ -2711,11 +2301,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/thesis/ressources/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))))
     
    @@ -2723,12 +2313,60 @@ 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)))
    +
    +
    + +

    +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)))
    +  )
    +
    +
    + +

    +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)))
    +  )
    +
    +
    + +

    +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 [ -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
     
    @@ -2742,14 +2380,45 @@ 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)
    -  (setq filename (concat "./figs/" (read-string "Enter file name:") ".png"))
    -  (shell-command (concat "maim -s " filename))
    -  (insert (format "[[file:%s]]" filename))
    -  )
    +
    (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 -s " filepath))
    +  (insert (format "#+name: fig:%s\n#+caption:\n[[file:%s]]" filename filepath))
    +  (search-backward "caption")
    +  (end-of-line)
    +  )
    +
    +
    + +

    +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) "]]"))
    +  )
    +
    +
    + +

    +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) "]]"))
    +  )
     
    @@ -2757,13 +2426,17 @@ Take Screenshot and insert a link: 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 "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)))
     
    @@ -2773,32 +2446,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)))
     
    @@ -2808,37 +2481,38 @@ Map Keys

    Org LaTeX Automatic fragment

    -
    (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)))
     
    -
    -

    Bibtex ,n

    -
    +
    +

    Bibtex ,r

    +
    -
    (after! org
    -  (map! :map org-mode-map
    -        (:prefix (",b" . "BibTeX")
    -        :n "b" 'helm-bibtex
    -        :n "f" '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)))
     
    @@ -2848,17 +2522,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))
     
    @@ -2871,10 +2545,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"))
    +  )
     
    @@ -2882,19 +2556,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)))
     
    @@ -2913,11 +2587,20 @@ 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))
    +
    +
    + +

    +Default header arguments. +

    +
    +
    (after! org
    +  (setq org-babel-default-header-args '((:eval . "no-export"))))
     
    @@ -2925,8 +2608,8 @@ Don’t ask for confirmation when evaluating following blocs 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))
     
    @@ -2936,37 +2619,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)
    -
    -
    - -
    -
      (after! org
    -    (set-face-attribute 'org-block nil :background (face-background 'fringe))
    -    (set-face-attribute 'org-block-begin-line nil :background (face-background 'fringe))
    -    (set-face-attribute 'org-block-end-line nil :background (face-background 'fringe))
    -)
    -
    -
    - -

    -If required, it is possible to set custom colors for different source blocks -

    -
    -
    ;; (after! org
    -;;   (setq org-src-block-faces
    -;;     '(("emacs-lisp" (:background (face-background 'org-block)))
    -;;       ("matlab" (:background (face-background 'fringe)))))
    -;; )
    +
    (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)
     
    @@ -2976,11 +2638,11 @@ If required, it is possible to set custom colors for different source blocks

    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)
    +  )
     
    @@ -2990,12 +2652,12 @@ If required, it is possible to set custom colors for different source blocks

    Library of Babel

    -Add all named source blocks to org-babel-library-of-babel. +Add all named source blocks to org-babel-library-of-babel (link).

    -
    (after! org
    -  (org-babel-lob-ingest "~/Cloud/thesis/org-mode/org-babel-tutorial/org-babel-library.org"))
    +
    (after! org
    +  (org-babel-lob-ingest "~/.config/literate-dotfiles/dotfiles/emacs-library-babel.org"))
     
    @@ -3006,22 +2668,22 @@ Add all named source blocks to org-babel-library-of-babel.

    Org-Babel Matlab

    -
    (after! org
    -  (setq org-babel-matlab-shell-command "/home/thomas/bin/matlab -nodesktop -nosplash")
    +
    (after! org
    +  (setq org-babel-matlab-shell-command "/home/thomas/.local/bin/matlab -softwareopengl -nodesktop -nosplash")
     
    -  (setq org-babel-matlab-emacs-link-wrapper-method
    -      "%s
    -      if ischar(ans);
    -      echo('test');
    -      fid = fopen('%s', 'w');
    -      fprintf(fid, '%s', ans);
    -      fclose(fid);
    -      else;
    -      save -ascii %s ans;
    -      end
    -      delete('%s');
    -      ")
    -  )
    +  (setq org-babel-matlab-emacs-link-wrapper-method
    +        "%s
    +      if ischar(ans);
    +      echo('test');
    +      fid = fopen('%s', 'w');
    +      fprintf(fid, '%s', ans);
    +      fclose(fid);
    +      else;
    +      save -ascii %s ans;
    +      end
    +      delete('%s');
    +      ")
    +  )
     
    @@ -3029,19 +2691,19 @@ Add all named source blocks to org-babel-library-of-babel. Default options for Matlab code

    -
    (after! org
    -  (setq org-babel-default-header-args:matlab
    -        '((:results . "none")
    -          (:session . "*MATLAB*")
    -          (:comments . "org")
    -          (:exports . "both")
    -          (:cache .   "no")
    -          (:noweb . "no")
    -          (:hlines . "no")
    -          (:tangle . "no")
    -          (: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")))
    +  )
     
    @@ -3054,13 +2716,13 @@ Default options for Matlab code whos matlab function

    -
    (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"))))
     
    @@ -3068,14 +2730,14 @@ Default options for Matlab code help matlab function

    -
    (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")))
    +  )
     
    @@ -3083,10 +2745,10 @@ Default options for Matlab code Specify a Matlab command to run

    -
    (defun tdh-matlab-run-command ()
    -  "Prompt user to enter a matlab command"
    -  (interactive)
    -  (process-send-string "*MATLAB*" (concat (read-string "Matlab Command: ") "\n")))
    +
    (defun tdh-matlab-run-command ()
    +  "Prompt user to enter a matlab command"
    +  (interactive)
    +  (process-send-string "*MATLAB*" (concat (read-string "Matlab Command: ") "\n")))
     
    @@ -3094,10 +2756,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")))
     
    @@ -3105,35 +2767,34 @@ Specify a Matlab command to run and show output in mini-buffer Org-Babel Tangle File and Execute with Matlab

    -
    (defun tdh-matlab-tangle-and-execute ()
    -  "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)
    -      (process-send-string "*MATLAB*" (concat "run " file "\n"))
    -    (error "Cannot open tangle file %S" file)))))
    +
    (defun tdh-matlab-tangle-and-execute ()
    +  "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)
    +      (process-send-string "*MATLAB*" (concat "run " file "\n"))
    +    (error "Cannot open tangle file %S" file)))))
     
    -

    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)))
     
    @@ -3152,24 +2813,24 @@ when inside a source block. Otherwise, keep the normal behavior for ctrl-r

    -
    (defun tdh-ctrl-ret ()
    -  (interactive)
    -  (defun 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 (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)
     
    @@ -3183,65 +2844,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))
    +     )))
    +    )
    +  )
     
    @@ -3251,11 +2912,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"))))
     
    @@ -3278,36 +2939,57 @@ if no region is selected, it runs all the code blocks and goes to the next block
    -
    (defun tdh-ctrl-shift-ret ()
    -  (interactive)
    -  (defun 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 (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)
     
    +
    +

    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"))))
    +
    +  (if (tdh-in-src-block-p)
    +      (progn
    +        (org-edit-special)
    +        (evil-indent (point-min) (point-max))
    +        (org-edit-src-exit))
    +    (org-table-eval-formula)))
    +
    +
    +
    +
    +

    Helping Functions - Tangling ,b

    @@ -3315,14 +2997,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))
    +  )
     
    @@ -3330,19 +3012,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)))))
     
    @@ -3350,65 +3032,483 @@ 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)))
     
    -
    -

    LaTeX

    -
    +
    +

    Bibliography Management

    +
    +

    +My bibliography management is mainly based on the following packages: +

    +
      +
    • org-ref for nice citations
    • +
    • org-noter to annotate documents
    • +
    • org-roam to manage and links all my notes
    • +
    • helm-bibtex as an interface to easily find references
    • +
    • org-roam-bibtex that connects all the above packages
    • +
    +
    + +
    +

    Org Ref (link)

    +
    +

    +Nice Functions: +

    +
      +
    • org-ref-insert-ref-link
    • +
    • org-ref-helm-insert-cite-link
    • +
    • org-ref-list-of-figures
    • +
    • org-ref-find-bad-citations
    • +
    • org-ref-clean-bibtex-entry
    • +
    + +
    +
    (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"))
    +
    +  ;; Folder where all the pdf are located
    +  (setq org-ref-pdf-directory "~/Cloud/pdfs")
    +
    +  ;; 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)
    +
    +  (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)
    +
    +  ;; 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))))
    +
    +
    +
    +
    + +
    +

    Org Noter (link)

    +
    +
    +
    (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)
    +
    +  ;; 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)
    +
    +  ;; 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")
    +
    +  (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))
    +  )
    +
    +
    +
    +
    + +
    +

    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-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)))
    +  )
    +
    +
    + +
    +
    (defun tdh-org-roam--backlinks-list (file)
    +  (if (org-roam--org-roam-file-p file)
    +      (--reduce-from
    +       (concat acc (format "- [[file:%s][%s]]\n"
    +                           (file-relative-name (car it) org-roam-directory)
    +                           (org-roam--get-title-or-slug (car it))))
    +       "" (org-roam-db-query [:select [from] :from links :where (= to $s1)] file))
    +    ""))
    +
    +(defun tdh-org-export-preprocessor (backend)
    +  (let ((links (tdh-org-roam--backlinks-list (buffer-file-name))))
    +    (unless (string= links "")
    +      (save-excursion
    +        (goto-char (point-max))
    +        (insert (concat "\n* Backlinks\n") links)))))
    +
    +(add-hook 'org-export-before-processing-hook 'tdh-org-export-preprocessor)
    +
    +
    +
    +
    + +
    +

    Helm-Bibtex (link)

    +
    +
    +
    (use-package! helm-bibtex
    +  :after-call helm-bibtex
    +  :init
    +  :config
    +  ;; Bibliography file
    +  (setq bibtex-completion-bibliography "~/Cloud/brain/biblio/references.bib")
    +
    +  ;; Directory with all the pdfs
    +  (setq bibtex-completion-library-path "~/Cloud/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"))
    +
    +  ;; Use "tags" field when looking for bib entries
    +  (setq helm-bibtex-additional-search-fields '(tags))
    +
    +  (setq helm-bibtex-full-frame nil)
    +
    +  ;; Display of bibtex entries with helm
    +  (setq bibtex-completion-display-formats
    +        '((t . "${author:36} ${title:*} ${year:4} ${=type=:7} ${=has-note=:1}")))
    +
    +  ;; Special symbols for notes and pdf
    +  (setq bibtex-completion-pdf-symbol "⌘")
    +  (setq bibtex-completion-notes-symbol "✎")
    +
    +  ;; 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"
    +                                                                ))
    +
    +  ;; 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-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)
    +  )
    +
    +
    + +
    +
    (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-relative-name path) "][Notes]]"))
    +          (message "No note file associated"))
    +        )))
    +
    +
    + +

    +Open pdf externally +

    +
    +
    (defun tdh-open-pdf-externally (key)
    +  (call-process "zathura" nil 0 nil (nth 0 (-cons-to-list (bibtex-completion-find-pdf key)))))
    +
    +
    + +

    +Special Commands +

    +
    +
    (defun tdh-helm-bibtex-favorites (&optional arg)
    +  "Search Favorite BibTeX entries"
    +  (interactive "P")
    +  (helm-bibtex arg nil "favorite "))
    +
    +
    + +

    +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 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 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*")
    +  )
    +
    +
    +
    +
    + +
    +

    Deft

    +
    +
    +
    (use-package! deft
    +  :custom
    +  (deft-directory "~/Cloud/brain/"))
    +
    +
    +
    +
    + +
    +

    Org-Roam-Bibtex (link)

    +
    +

    +Provides nice functions such as: +

    +
      +
    • orb-find-non-ref-file
    • +
    • orb-insert-non-ref
    • +
    • orb-note-action
    • +
    + +
    +
    (use-package! org-roam-bibtex
    +  :hook (org-roam-mode . org-roam-bibtex-mode)
    +  :config
    +  (setq org-roam-bibtex-preformat-keywords `("=key=" "title" "author" "year" "author-abbrev" "=type="))
    +
    +  (setq org-roam-bibtex-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)))
    +  )
    +
    +
    + +
    +
    (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)))
    +
    +
    +
    +
    + +
    +

    Org-Ref-Ox-Hugo (link)

    +
    +

    +This package is used to correctly format the bibliography and links when exporting to hugo. +

    + +
    +
    (use-package! org-ref-ox-hugo
    +  :load-path "~/.config/doom/packages/org-ref-ox-hugo/"
    +  :config
    +  (add-to-list 'org-ref-formatted-citation-formats
    +               '("md"
    +                 ("article" . "${author}, *${title}*, ${journal}, *${volume}(${number})*, ${pages} (${year}). ${doi}")
    +                 ("inproceedings" . "${author}, *${title}*, In ${editor}, ${booktitle} (pp. ${pages}) (${year}). ${address}: ${publisher}.")
    +                 ("book" . "${author}, *${title}* (${year}), ${address}: ${publisher}.")
    +                 ("phdthesis" . "${author}, *${title}* (${year}). ${school}.")
    +                 ("inbook" . "${author}, *${title}*, In ${editor} (Eds.), ${booktitle} (pp. ${pages}) (${year}). ${address}: ${publisher}.")
    +                 ("incollection" . "${author}, *${title}*, In ${editor} (Eds.), ${booktitle} (pp. ${pages}) (${year}). ${address}: ${publisher}.")
    +                 ("proceedings" . "${editor} (Eds.), _${booktitle}_ (${year}). ${address}: ${publisher}.")
    +                 ("unpublished" . "${author}, *${title}* (${year}). Unpublished manuscript.")
    +                 ("misc" . "${author} (${year}). *${title}*. Retrieved from [${howpublished}](${howpublished}). ${note}.")
    +                 (nil . "${author}, *${title}* (${year}).")))
    +
    +  (setq reference-link-class "reference-link")
    +  (setq bibtex-entry-class "bibtex-entry")
    +  )
    +
    +
    +
    +
    +
    + +
    +

    LaTeX

    + -
    -

    Basic LaTeX configuration

    -
    -
    -
    (defun latex/clean ()
    -  "Clean LaTeX output using latexmk"
    -  (interactive)
    -  (async-shell-command
    -   ;; command and parameters
    -   "latexmk -c "
    -   (shell-quote-argument buffer-file-name)
    -   " &"
    -  ))
    -
    -(map! :map LaTeX-mode-map :n ",C" 'latex/clean)
    -
    -(add-hook 'TeX-mode-hook #'TeX-fold-mode)
    -
    -
    -
    -
    - -
    -

    Face Attributes

    -
    -
    -
    (with-eval-after-load 'font-latex
    -  (set-face-attribute 'font-latex-math-face nil :foreground (face-foreground 'org-meta-line))
    -)
    -
    -
    -
    -
    -

    Master file

    -
    (setq-default TeX-master nil)
    +
    (setq-default TeX-master nil)
    +
    +
    +
    +
    + +
    +

    Clean Output Files

    +
    +
    +
    (defun tdh-latex-clean ()
    +  "Clean LaTeX output using latexmk"
    +  (interactive)
    +  (async-shell-command
    +   ;; command and parameters
    +   "latexmk -c "
    +   (shell-quote-argument buffer-file-name)
    +   " &"
    +   ))
    +
    +(map! :map LaTeX-mode-map
    +      :n ",C" 'tdh-latex-clean)
    +
    +(add-hook 'TeX-mode-hook #'TeX-fold-mode)
     
    @@ -3418,12 +3518,12 @@ Map Functions

    PDF Viewer

    -
    (setq TeX-view-program-selection '((output-pdf "Zathura")))
    -(setq TeX-source-correlate-mode t)
    -(setq TeX-source-correlate-start-server t)
    -(setq TeX-source-correlate-method 'synctex)
    -(setq TeX-view-program-list
    -      '(("PDF Tools" TeX-pdf-tools-sync-view)))
    +
    (setq TeX-view-program-selection '((output-pdf "Zathura")))
    +(setq TeX-source-correlate-mode t)
    +(setq TeX-source-correlate-start-server t)
    +(setq TeX-source-correlate-method 'synctex)
    +(setq TeX-view-program-list
    +      '(("PDF Tools" TeX-pdf-tools-sync-view)))
     
    @@ -3433,182 +3533,20 @@ Map Functions

    Bibtex

    -
    (use-package! bibtex
    -  :config
    -  (bibtex-set-dialect 'BibTeX))
    +
    (use-package! bibtex
    +  :config
    +  (bibtex-set-dialect 'BibTeX))
     
    -
    -

    Helm-Bibtex

    -
    -
    -
    -

    General Config

    -
    -
    -
    (use-package! helm-bibtex
    -  :init
    -  :config
    -  ;; Bibliography file
    -  (setq bibtex-completion-bibliography "~/Cloud/thesis/ressources/references.bib")
    -
    -  ;; Directory with all the pdfs
    -  (setq bibtex-completion-library-path "~/Cloud/thesis/ressources/pdfs")
    -
    -  ;; Directory with notes files
    -  (setq bibtex-completion-notes-path "~/Cloud/thesis/ressources/notes/notes.org")
    -
    -  (setq bibtex-completion-notes-extension ".org")
    -
    -  (setq bibtex-completion-pdf-extension '(".pdf" ".djvu"))
    -
    -  ;; Use "tags" field when looking for bib entries
    -  (setq helm-bibtex-additional-search-fields '(tags))
    -
    -  (setq helm-bibtex-full-frame nil)
    -
    -  ;; Display of bibtex entries with helm
    -  (setq bibtex-completion-display-formats
    -          '((t . "${author:36} ${title:*} ${year:4} ${=type=:7} ${=has-note=:1}")))
    -
    -  ;; Special symbols for notes and pdf
    -  (setq bibtex-completion-pdf-symbol "⌘")
    -  (setq bibtex-completion-notes-symbol "✎")
    -
    -  ;; Template used when creating new Note file
    -  (setq bibtex-completion-notes-template-multiple-files (concat "#+TITLE: ${title}\n"
    -    ":DRAWER:\n"
    -    "#+LATEX_CLASS: biblioreport\n"
    -    "\n"
    -    "#+OPTIONS: toc:nil title:nil\n"
    -    "#+OPTIONS: ':t -:t\n"
    -    "\n"
    -    "#+LATEX_HEADER: \\newcommand{\\refType}{${=type=}}\n"
    -    "#+LATEX_HEADER: \\newcommand{\\refKey}{${=key=}}\n"
    -    "#+LATEX_HEADER: \\newcommand{\\refTitle}{${title}}\n"
    -    "#+LATEX_HEADER: \\newcommand{\\refAuthor}{${author-or-editor}}\n"
    -    "#+LATEX_HEADER: \\newcommand{\\refJournal}{${journal}}\n"
    -    "#+LATEX_HEADER: \\newcommand{\\refYear}{${year}}\n"
    -    "#+LATEX_HEADER: \\newcommand{\\refDoi}{${DOI}}\n"
    -    "#+LATEX_HEADER: \\newcommand{\\refUrl}{${url}}\n"
    -    "#+LATEX_HEADER: \\newcommand{\\refKeywords}{${tags}}\n"
    -    "#+LATEX_HEADER: \\input{config.tex}\n"
    -    "#+LATEX_HEADER: \\graphicspath{{./figs/${=key=}/}}\n"
    -    "# #+TOC: headlines 2\n"
    -    ":END:\n"
    -    "\n"
    -    "#+BEGIN_abstract\n"
    -    "\n"
    -    "#+END_abstract\n"
    -    "\n"
    -    "* ${title} :${=type=}:ignore:\n"
    -    ":PROPERTIES:\n"
    -    ":CUSTOM_ID: ${=key=}\n"
    -    ":AUTHOR:    ${author}\n"
    -    ":TYPE:      ${=type=}\n"
    -    ":JOURNAL:   ${journal}\n"
    -    ":YEAR:      ${year}\n"
    -    ":VOLUME:    ${volume}\n"
    -    ":PAGES:     ${pages}\n"
    -    ":DOI:       ${DOI}\n"
    -    ":URL:       ${url}\n"
    -    ":NOTER_DOCUMENT: ../pdfs/${=key=}.pdf\n"
    -    ":END:\n"
    -    "\n"))
    -
    -  (setq bibtex-completion-notes-template-one-file (concat "\n"
    -    "* ${author-abbrev} (${year}): ${title} :${=type=}:ignore:\n"
    -    ":PROPERTIES:\n"
    -    ":CUSTOM_ID: ${=key=}\n"
    -    ":EXPORT_FILE_NAME: ${=key=}\n"
    -    ":EXPORT_TITLE: ${title}\n"
    -    ":AUTHOR:    ${author}\n"
    -    ":TYPE:      ${=type=}\n"
    -    ":JOURNAL:   ${journal}\n"
    -    ":YEAR:      ${year}\n"
    -    ":VOLUME:    ${volume}\n"
    -    ":PAGES:     ${pages}\n"
    -    ":DOI:       ${DOI}\n"
    -    ":URL:       ${url}\n"
    -    ":NOTER_DOCUMENT: ../pdfs/${=key=}.pdf\n"
    -    ":END:\n"
    -    "\n"))
    -
    -  ;; 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-delete-action-from-source "Open PDF Externally" helm-source-bibtex)
    -  (helm-add-action-to-source "Open PDF Externally" 'tdehaeze/open-pdf-externally helm-source-bibtex 1)
    -)
    -
    -
    -
    -
    - -
    -

    Open pdf externally

    -
    -
    -
    ;; Action to open the pdf with Zathura
    -(defun tdehaeze/open-pdf-externally (key)
    -  (call-process "zathura" nil 0 nil (nth 0 (-cons-to-list (bibtex-completion-find-pdf key)))))
    -
    -
    -
    -
    - -
    -

    Special Commands

    -
    -
    -
    (defun helm-bibtex-favorites (&optional arg)
    -  "Search Favorite BibTeX entries"
    -  (interactive "P")
    -  (helm-bibtex arg nil "favorite "))
    -
    -
    -
    -
    - -
    -

    List all element of the bibliography without pdf associated

    -
    -
    -
    (defun 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)))
    -    )
    -
    -  (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))
    -
    -  (with-output-to-temp-buffer "*bib-without-pdf*" (princ (string-join candidate-without-pdf-names "\n")))
    -  (switch-to-buffer-other-window "*bib-without-pdf*")
    -  )
    -
    -
    -
    -
    -
    - -
    -

    TODO Matlab

    -
    +
    +

    Matlab

    + @@ -3616,49 +3554,31 @@ Map Functions

    Setup Matlab Mode

    -
    (setq matlab-shell-command "/home/thomas/bin/matlab")
    -(setq matlab-shell-command-switches (list "-nodesktop -nosplash"))
    -(setq mlint-programs '("mlint" "/home/thomas/bin/mlint"))
    +
    (setq matlab-shell-command "/home/thomas/.local/bin/matlab")
    +(setq matlab-shell-command-switches (list "-nodesktop -nosplash"))
    +(setq mlint-programs '("mlint" "/home/thomas/.local/bin/mlint"))
     
    -
    -

    Setup Flycheck

    -
    +
    +

    Setup Flycheck to work with mlint

    +
    -
    (defvar mlint-executable "/home/thomas/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)
    -
    -
    - -
    -
    (defadvice org-edit-src-code (around set-buffer-file-name activate compile)
    -  (let ((file-name (buffer-file-name))) ;; (1)
    -    ad-do-it                            ;; (2)
    -    (setq buffer-file-name file-name))) ;; (3)
    -
    -
    -
    -
    - -
    -

    TODO Setup Company - not working

    -
    -
    -
    ;; (add-to-list 'company-backends 'company-matlab)
    +;; Automatic startup of flycheck for matlab
    +(add-hook 'matlab-mode-hook 'flycheck-mode)
     
    @@ -3668,22 +3588,29 @@ Map Functions

    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)
     
    -

    TODO Beautify code

    +

    Beautify code

    -
    (defun matlab-beautify-buffer ()
    -  "Beautify Current Buffer"
    -  (interactive)
    -  (save-buffer)
    -  (matlab-shell-run-command (concat "MBeautify.formatFile(\"" (buffer-file-name) "\")"))
    -)
    +
    (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")
    +    )
    +  )
     
    @@ -3693,368 +3620,81 @@ Map Functions

    Key Bindings

    -
    (defun matlab-add-breakpoint ()
    -  (interactive)
    -  (matlab-shell-run-command (concat "dbstop in " (buffer-name) " at " (number-to-string (line-number-at-pos nil)))))
    -(defun matlab-remove-breakpoint ()
    -  (interactive)
    -  (matlab-shell-run-command (concat "dbclear in " (buffer-name) " at " (number-to-string (line-number-at-pos nil)))))
    -(defun matlab-list-breakpoints ()
    -  (interactive)
    -  (matlab-shell-run-command (concat "dbstatus " (buffer-name))))
    -(defun matlab-clear-breakpoints ()
    -  (interactive)
    -  (matlab-shell-run-command (concat "dbclear in " (buffer-name))))
    -(defun matlab-go-to-file-directory ()
    -  (interactive)
    -  (matlab-shell-run-command (concat "cd " (file-name-directory buffer-file-name))))
    +
    (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-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-go-to-file-directory ()
    +  (interactive)
    +  (matlab-shell-run-command (concat "cd " (file-name-directory buffer-file-name))))
     
    -
    (map! :map matlab-mode-map
    -      :n ",g" 'matlab-go-to-file-directory
    -      :n ",da" 'matlab-add-breakpoint
    -      :n ",dr" 'matlab-remove-breakpoint
    -      :n ",dL" 'matlab-list-breakpoints
    -      :n ",dc" 'matlab-clear-breakpoints
    -      :n ",dl" 'gud-cont
    -      :n ",ds" 'gud-step
    -      :n ",dn" 'gud-next
    -      :n ",dq" 'gud-finish)
    -
    -
    -
    -
    - -
    -

    Wrong highlight of comments

    -
    -
    -
    (add-hook 'matlab-mode-hook
    -  ;; `highlight-numbers-mode' breaks MATLAB comment coloring --
    -  ;; `highlight-numbers-mode' is mostly redundant with
    -  ;; `rainbow-identifiers-mode' anyway
    -  (lambda ()
    -    (highlight-numbers-mode -1))
    -  ;; We must append the above *after* `spacemacs/run-prog-mode-hooks'
    -  ;; in `matlab-mode-hook', since the former hook enables
    -  ;; `highlight-numbers-mode'. Note that
    -  ;; `spacemacs/run-prog-mode-hooks' is manually added to
    -  ;; `matlab-mode-hook' by Spacemacs since the upstream `matlab-mode'
    -  ;; package does not derive `matlab-mode' from `prog-mode' (oddly --
    -  ;; IIRC the author refused to do so for compatibility with XEmacs).
    -  'append)
    +
    (map! :map matlab-mode-map
    +      :n ",g" 'tdh-matlab-go-to-file-directory
    +      :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)
     
    -
    -

    Mails With Mu4e

    -
    + +
    +

    Mu4e

    +
    +
    +
    +

    Resources

    + - -
    -

    Set default mail user agent to mu4e

    -
    -
    -
    (setq mail-user-agent 'mu4e-user-agent)
    -
    -
    -
    -
    - -
    -

    Default config

    -
    -
    -
    -

    Default behavior

    -
    -
    -
    (setq mu4e-maildir "~/.mail"
    -      mu4e-update-interval nil
    -      mu4e-compose-signature-auto-include t
    -      mu4e-view-show-images t
    -      mu4e-view-show-addresses t)
    -
    -
    -
    -
    - -
    -

    Default folders

    -
    -
    -
    (setq mu4e-sent-folder "/gmail/Sent"
    -      mu4e-drafts-folder "/gmail/Drafts"
    -      mu4e-trash-folder "/gmail/Trash"
    -      mu4e-refile-folder "/gmail/Archive"
    -      mu4e-compose-signature "Thomas Dehaeze\n"
    -      user-mail-address "dehaeze.thomas@gmail.com")
    -
    -
    -
    -
    - -
    -

    Default signature and email address

    -
    -
    -
    (setq mu4e-compose-signature "Thomas Dehaeze\n"
    -      user-mail-address "dehaeze.thomas@gmail.com")
    -
    -
    -
    -
    - -
    -

    Saving the attachment to Downloads directory

    -
    -
    -
    (setq mu4e-attachment-dir "~/Downloads")
    -
    -
    -
    -
    - -
    -

    A list of user’s e-mail addresses

    -
    -
    -
    (setq mu4e-user-mail-address-list '("dehaeze.thomas@gmail.com" "thomas.dehaeze@esrf.fr" "thomas.dehaeze@doct.ulg.ac.be"))
    -
    -
    -
    -
    - -
    -

    Mail directory shortcuts

    -
    -
    -
    (setq mu4e-maildir-shortcuts
    -      '(
    -        ("/gmail/Inbox" . ?g)
    -        ("/esrf/Inbox"  . ?e)
    -        ("/ulg/Inbox"   . ?u)
    -        ))
    -
    -
    -
    -
    -
    - -
    -

    TODO Contexts - Email accounts

    -
    -
    -
    (setq mu4e-contexts
    -      `( ,(make-mu4e-context
    -           :name "gmail"
    -           :enter-func (lambda () (mu4e-message "Entering Gmail context"))
    -           :leave-func (lambda () (mu4e-message "Leaving Gmail context"))
    -           :match-func (lambda (msg)
    -                         (when msg
    -                           (string-match-p "^/gmail" (mu4e-message-field msg :maildir))))
    -           :vars '(
    -                   (mu4e-sent-messages-behavior . (delete))
    -                   (user-mail-address . "dehaeze.thomas@gmail.com")
    -                   (mu4e-sent-folder . "/gmail/Sent")
    -                   (mu4e-trash-folder . "/gmail/Trash")
    -                   (mu4e-drafts-folder . "/gmail/Drafts")
    -                   (mu4e-refile-folder . "/gmail/Archive")
    -                   (mu4e-compose-signature  .
    -                                            (concat
    -                                             "Thomas Dehaeze\n"
    -                                             "\n"))
    -                   ))
    -         ,(make-mu4e-context
    -           :name "esrf"
    -           :enter-func (lambda () (mu4e-message "Entering ESRF context"))
    -           :leave-func (lambda () (mu4e-message "Leaving ESRF context"))
    -           :match-func (lambda (msg)
    -                         (when msg
    -                           (string-match-p "^/esrf" (mu4e-message-field msg :maildir))))
    -           :vars '(
    -                   (user-mail-address . "thomas.dehaeze@esrf.fr")
    -                   (mu4e-sent-folder . "/esrf/Sent")
    -                   (mu4e-trash-folder . "/esrf/Trash")
    -                   (mu4e-drafts-folder . "/esrf/Drafts")
    -                   (mu4e-refile-folder . "/esrf/Archive")
    -                   (mu4e-compose-signature  .
    -                                            (concat
    -                                             "Thomas Dehaeze\n"
    -                                             "\n"))
    -                   ))
    -         ,(make-mu4e-context
    -           :name "ulg"
    -           :enter-func (lambda () (mu4e-message "Entering ULG context"))
    -           :leave-func (lambda () (mu4e-message "Leaving ULG context"))
    -           :match-func (lambda (msg)
    -                         (when msg
    -                           (string-match-p "^/ulg" (mu4e-message-field msg :maildir))))
    -           :vars '(
    -                   (user-mail-address . "thomas.dehaeze@doct.ulg.ac.be")
    -                   (mu4e-sent-folder . "/ulg/Sent")
    -                   (mu4e-trash-folder . "/ulg/Trash")
    -                   (mu4e-drafts-folder . "/ulg/Drafts")
    -                   (mu4e-refile-folder . "/ulg/Archive")
    -                   (mu4e-compose-signature  .
    -                                            (concat
    -                                             "Thomas Dehaeze\n"
    -                                             "\n"))
    -                   ))
    -         ))
    -(setq mu4e-context-policy 'pick-first)
    -
    -
    -
    -
    - -
    -

    Receiving emails - Mbsync

    -
    -

    -Let systemd get the mail, then pressing U will just run mu to reindex everything. -

    -
    -
    (setq mu4e-get-mail-command "true")
    -
    -

    -Fix for mbsync found here. +Use contexts for multiple accounts:

    -
    -
    (setq mu4e-change-filenames-when-moving t)
    -
    -
    -
    -
    - -
    -

    Sending emails - Msmtp

    -
    -
    -
    (setq smtpmail-default-smtp-server "smtp.gmail.com"
    -      smtpmail-smtp-server "smtp.gmail.com"
    -      smtpmail-smtp-service 587)
    -
    -(setq message-send-mail-function 'message-send-mail-with-sendmail
    -      sendmail-program "msmtp"
    -      user-full-name "Thomas Dehaeze")
    -
    -
    -
    -
    - -
    -

    Bookmarks

    -
    -
    -
    (setq mu4e-bookmarks
    -      `(("flag:unread AND NOT flag:trashed" "Unread messages" ?u)
    -        ("date:today..now" "Today's messages" ?t)
    -        ("date:7d..now" "Last 7 days" ?w)
    -        ("mime:image/*" "Messages with images" ?p)
    -        (,(mapconcat 'identity
    -                     (mapcar
    -                      (lambda (maildir)
    -                        (concat "maildir:" (car maildir)))
    -                      mu4e-maildir-shortcuts) " OR ")
    -         "All inboxes" ?i)))
    -
    -
    -
    -
    - -
    -

    TODO Notifications

    -
    -
    -
    (with-eval-after-load 'mu4e-alert
    -  (mu4e-alert-set-default-style 'libnotify))
    -(mu4e-alert-enable-notifications)
    -
    -
    +

    -Mode-line notifications -

    -
    -
    (setq mu4e-enable-mode-line t)
    -
    -
    -
    -
    - -
    -

    Use Org-Mode Tables In Emails

    -
    -
    -
    (add-hook 'message-mode-hook 'turn-on-orgtbl)
    -(add-hook 'message-mode-hook 'turn-on-orgstruct++)
    -
    -
    -
    -
    - -
    -

    TODO Integration with Org-Mode

    -
    -

    -Store link to message if in header view, not to header query -

    -
    -
    (setq org-mu4e-link-query-in-headers-mode nil)
    -
    -
    -
    -
    - -
    -

    TODO When putting something on the Trash, it will be in the archive folder on gmail

    -
    -

    -Even when totally deleting it. It will stay on gmail. How to fix that? -

    -
    -
    - -
    -

    TODO Verify that sending mails with gmail account works and that there is no duplicate

    -
    -

    -Should check this variable: mu4e-sent-messages-behavior -

    -
    -
    (setq mu4e-sent-messages-behavior 'delete)
    -
    -
    - -

    -And here. -If I put it to delete, it works for gmail but not for the other ones… -Check here. +Send math and source code:

    +
    -

    TODO Cheatsheet

    +

    Cheatsheet

    @@ -4099,131 +3739,219 @@ Check here.
    + +
    +

    Helping function

    +
    +

    +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)))))
    +
    -
    -

    PDF-Tools

    -
    +

    +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. +

    -
    (use-package! pdf-tools
    -    :config
    -    (add-hook 'pdf-view-mode-hook (lambda() (linum-mode -1)))
    -  )
    +
    (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))))))
     
    -
    -

    Yassnippets

    -
    +
    +

    Basic Config

    +
    -
    (push "~/.config/doom/snippets" yas-snippet-dirs)
    -(yas-global-mode 1)
    +
    (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)
    +  )
     
    -
    -

    Proxy

    -
    +
    +

    Additional config

    +
    -
    (setq url-proxy-services
    -   '(("http" . "proxy.esrf.fr:3128")
    -     ("https" . "proxy.esrf.fr:3128")
    -     ("no_proxy" . "^.*esrf.fr")))
    +
    (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)
    +
    +  ;; 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)
    +  )
     
    -
    -

    TODO Neomutt connection

    -
    -

    -https://mentat.za.net/blog/2018/10/31/using-org-mode-with-neomutt/ -

    - +
    +

    Provide Information

    +
    -
    (require 'org-protocol)
    -;; Call this function, which spawns neomutt, whenever org-mode
    -;; tries to open a link of the form mutt:message-id+goes_here@mail.gmail.com
    -
    -(defun tdh-mutt-open-message (message-id)
    -  "In neomutt, open the email with the the given Message-ID"
    -  (let*
    -      ((message-id (replace-regexp-in-string "^/*" "" message-id))
    -      (mail-file
    -        (replace-regexp-in-string
    -        "\n$" "" (shell-command-to-string
    -                  (format "mu find -n 1 -f l i:%s" message-id))))
    -      (mail-dir (replace-regexp-in-string "/\\(cur\\|new\\|tmp\\)/$" ""
    -                                          (file-name-directory mail-file)))
    -      (message-id-escaped (regexp-quote message-id))
    -      (mutt-keystrokes
    -        (format "L~i %s\n\n" (shell-quote-argument message-id-escaped)))
    -      (mutt-command (list "neomutt" "-R" "-f" mail-dir
    -                          "-e" (format "push '%s'" mutt-keystrokes))))
    -
    -    (message "Launching neomutt for message %s" message-id)
    -    (call-process "setsid" nil nil
    -                  "-f" "termite" "-e"
    -                  (concat "neomutt -R -f " mail-dir " -e \"" (format "push '%s a l'\"" mutt-keystrokes)))))
    -
    -;; Hook up `message:...` style URLs
    -(org-add-link-type "message" 'tdh-mutt-open-message)
    +
    (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")
    +  )
     
    -
    -

    Abbreviations

    -
    -

    -Type the abbreviation and use C-x a - to create a new abbreviation. -

    - +
    +

    Receiving emails using mbsync

    +
    -
    (setq-default abbrev-mode t)
    -;; save abbreviations upon exiting xemacs
    -(setq save-abbrevs t)
    -;; set the file storing the abbreviations
    -(setq abbrev-file-name "~/.config/doom/my-abbreviations.el")
    -;; reads the abbreviations file on startup
    -(quietly-read-abbrev-file)
    +
    (use-package! mu4e
    +  :config
    +  (setq mu4e-get-mail-command "checkmail"
    +        mu4e-update-interval nil
    +        mu4e-change-filenames-when-moving t) ;; Fix for mbsync
    +  )
     
    -
    -

    Other

    -
    -

    -Here are some additional functions/macros that could help you configure Doom: -

    +
    +

    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")
    +                     ))
    +           ))
    +  )
    +
    +
    +
    +
    -
      -
    • `load!’ for loading external *.el files relative to this one
    • -
    • `use-package’ for configuring packages
    • -
    • `after!’ for running code after a package has loaded
    • -
    • `add-load-path!’ for adding directories to the `load-path’, where Emacs -looks when you load packages with `require’ or `use-package’.
    • -
    • `map!’ for binding new keys
    • -
    +
    +

    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")
     
    -

    -To get information about any of these functions/macros, move the cursor over -the highlighted symbol at press ’K’ (non-evil users must press ’C-c g k’). -This will open documentation for it, including demos of how they are used. -

    + ;; 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) -

    -You can also try ’gd’ (or ’C-c g d’) to jump to their definition and see how -they are implemented. -

    + ;; 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) + ) +
    +
    +
    +
    + +
    +

    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)))
    +  )
    +
    +
    +
    @@ -4231,87 +3959,95 @@ they are implemented.

    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
    -       hl-todo           ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
    +       :ui
    +       doom              ; what makes DOOM look the way it does
    +       deft
    +       hl-todo           ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
            hydra
    -       modeline          ; snazzy, Atom-inspired modeline, plus API
    -       nav-flash         ; blink the current line after jumping
    -       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
    -       window-select     ; visually switch windows
    -       workspaces        ; tab emulation, persistence & separate workspaces
    +       (modeline
    +        +light)          ; snazzy, Atom-inspired modeline, plus API
    +       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
     
    -       :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             ; making dired pretty [functional]
    -       electric          ; smarter, keyword-based electric-indent
    -       ibuffer           ; interactive buffer management
    -       vc                ; version-control and Emacs, sitting in a tree
    +       :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
     
    -       :term
    -       eshell            ; a consistent, cross-platform shell (WIP)
    +       :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
    -       ;;pass              ; password manager for nerds
    -       pdf               ; pdf enhancements
    +       :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
    +       ;;pass              ; password manager for nerds
    +       pdf               ; pdf enhancements
    +       eval
    +       biblio
     
    -       :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
    -       latex            ; writing papers in Emacs has never been so fun
    -       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
    -        +journal         ;
    -        +roam         ;
    -        +pomodoro        ;
    -        +present)        ; using org-mode for presentations
    -       python            ; beautiful is better than ugly
    -       sh                ; she sells {ba,z,fi}sh shells on the C xor
    +       :lang
    +       data              ; config/data formats
    +       emacs-lisp        ; drown in parentheses
    +       go
    +       (javascript
    +        +lsp)
    +       latex            ; writing papers in Emacs has never been so fun
    +       ;; 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)
     
    -       :email
    -       ;;(mu4e +gmail)
    +       :email
    +       (mu4e +gmail)
     
    -       :app
    +       :app
            calendar
    -       ;;(rss +org)        ; emacs as an RSS reader
    -       ;;write             ; emacs for writers (fiction, notes, papers, etc.)
    +       ;;(rss +org)        ; emacs as an RSS reader
    +       ;;write             ; emacs for writers (fiction, notes, papers, etc.)
     
    -       :config
    +       :config
            literate
    -       (default +bindings +smartparens))
    +       (default +bindings)
    +       )
     
    @@ -4321,751 +4057,27 @@ they are implemented.

    Doom packages.el

    -
    (package! org-noter)
    -(package! poet-theme)
    -(package! org-alert)
    -(package! org-gcal)
    -(package! ox-latex-subfigure
    -  :recipe (:host github :repo "linktohack/ox-latex-subfigure"))
    -(package! matlab-mode
    -  :recipe (:host github :repo "matlab-mode/mirror"))
    -(package! org-ref)
    -(package! org-ql)
    -(package! org-fancy-priorities)
    +
    (package! poet-theme)
    +(package! org-alert)
    +(package! org-gcal)
    +(package! ox-latex-subfigure
    +  :recipe (:host github :repo "linktohack/ox-latex-subfigure"))
    +(package! matlab-mode
    +  :recipe (:host github :repo "matlab-mode/mirror"))
    +(package! org-ref)
    +(package! org-roam-bibtex)
    +(package! org-ql)
    +(package! org-fancy-priorities)
    +(package! evil-escape :disable t)
    +(package! dired-narrow)
     
    - -
    -

    Snippets

    -
    -
    -
    -

    LaTeX

    -
    -
    -
    -

    Coordinate

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :coordinate
    -# --
    -\coordinate[${1:->}] (${2:name}) at (${3:pointcoordinate});
    -$0
    -
    -
    -
    -
    - -
    -

    Draw

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :draw
    -# --
    -\draw[${1:->}] (${2:point1}) -- (${3:point2});
    -$0
    -
    -
    -
    -
    - -
    -

    Node

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :node
    -# --
    -node[${1:below right}] (${2:name}) {${3:label}};
    -$0
    -
    -
    -
    -
    - -
    -

    Path

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :path
    -# --
    -\path[${1}] (${2:point1}) -- (${3:point2});
    -$0
    -
    -
    -
    -
    -
    - -
    -

    Matlab

    -
    -
    -
    -

    Clear

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :clear and close all
    -# --
    -clear; close all; clc;
    -$0
    -
    -
    -
    -
    - -
    -

    Function

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :function
    -# --
    -function [${4:outputs}] = ${1:functionName}(${2:inputs}, ${3:opts_param})
    -% $1 - Description
    -%
    -% Syntax: $1($2, $3)
    -%
    -% Inputs:
    -%    - $2 -
    -%    - $3 - Optionals parameters: structure with the following fields:
    -%        -
    -%
    -% Outputs:
    -%    - $4 -
    -
    -%% Default value for opts
    -opts = struct(...
    -    '${5:outputs}', ${6:default_value} ...
    -);
    -
    -if exist('opts_param','var')
    -    for opt = fieldnames($3)'
    -        if sum(strcmp(fieldnames(opts), opt{1})) == 1
    -            opts.(opt{1}) = $3.(opt{1});
    -        else
    -            warning(sprintf('%s is not a valid option.', opt{1}));
    -        end
    -    end
    -end
    -
    -$0
    -
    -
    -
    -
    -
    - -
    -

    Org Mode

    -
    -
    -
    -

    Begin

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :LaTeX Environment
    -# --
    -\begin{${1:equation}}
    -  $0
    -\end{$1}
    -
    -
    -
    -
    - -
    -

    Block

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Org-Mode Block
    -#key: block
    -# --
    -#+begin_${1:$$(let ((type (yas-choose-value '("src" "example" "quote" "verse" "center" "latex" "html" "ascii"))))
    -               (if type (concat type (if (equal type "src")
    -                                         (concat " " (yas-choose-value '("emacs-lisp" "latex" "python" "sh" "matlab")))))))}
    -$0
    -#+end_${1:$(car (split-string yas-text))}
    -
    -
    -
    -
    - -
    -

    Custom Box

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Custom Box
    -# --
    -#+attr_latex: :options [$1]{${2:blue}}{${3:ams nodisplayskip}}
    -#+begin_cbox
    -$0
    -#+end_cbox
    -
    -
    -
    -
    - -
    -

    Latex Class

    -
    -
    -
    #name: latex-class
    -#key: lc
    -#expand-env: ((classes (mapcar 'car org-latex-classes)))
    -# --
    -#+latex_class: ${1:$$(yas-choose-value classes)}
    -$0
    -
    -
    -
    -
    - -
    -

    Name Caption Figure

    -
    -
    -
    #name: name-caption-figure
    -#key: ncf
    -# --
    -#+name: fig:${1:name}
    -#+caption: ${2:Caption}
    -[[${3:`(read-file-name "File: ")`}]]
    -
    -$0
    -
    -
    -
    -
    - -
    -

    Bibliography with completion

    -
    -
    -
    #name: bibliography with completion
    -#key: bib
    -# --
    -bibliography:${1:$$(yas-choose-value (org-ref-find-bibliography))}
    -
    -
    -
    -
    - -
    -

    Cite

    -
    -
    -
    #name: org-ref cite link
    -#key: cite
    -# --
    -cite:${1:$$(completing-read
    -       "bibtex key: "
    -       (let ((bibtex-files (org-ref-find-bibliography)))(bibtex-global-key-alist)))}
    -
    -
    -
    -
    - -
    -

    Ref

    -
    -
    -
    #name: org-ref ref link with completion
    -#key: ref
    -# --
    -ref:${1:$$(completing-read "label: " (org-ref-get-labels))}
    -
    -
    -
    -
    - -
    -

    Beamer - CBOX

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Beamer Custom Box
    -# --
    -*** ${1:@@latex:@@}           :B_cbox:
    -,:PROPERTIES:
    -:BEAMER_env: cbox
    -:BEAMER_opt: {${2:blue}}{${3:ams nodisplayskip}}
    -:END:
    -
    -$0
    -
    -
    -
    -
    - -
    -

    Code

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Code
    -# --
    -#+caption: ${1:Listing Caption}
    -#+label: lst:${2:listing_name}
    -#+begin_src ${3:listing_language}
    -$0
    -#+end_src
    -
    -
    -
    -
    - -
    -

    Equation

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Equation
    -# --
    -#+name: eq:${1:equation_name}
    -\begin{equation}
    -$0
    -\end{equation}
    -
    -
    -
    -
    - -
    -

    Figure

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Figure
    -# --
    -#+name: fig:${1:figure_name}
    -#+caption: ${2:Figure caption}
    -#+attr_latex: :${3:scale 1}
    -[[file:${4:figs/}$1.${5:pdf}]]
    -$0
    -
    -
    -
    -
    - -
    -

    Frac

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :LaTeX Fraction
    -# --
    -\frac{$1}{$2} $0
    -
    -
    -
    -
    - -
    -

    Left

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Left Right mathematical delimitations
    -# --
    -\left$1 $0 \right$2
    -
    -
    -
    -
    - -
    -

    Mconfig

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Matlab-Configuration-Header
    -# --
    -#+PROPERTY: header-args:matlab  :session *MATLAB*
    -#+PROPERTY: header-args:matlab+ :tangle ${1:filename}.m
    -#+PROPERTY: header-args:matlab+ :comments org
    -#+PROPERTY: header-args:matlab+ :exports both
    -#+PROPERTY: header-args:matlab+ :results none
    -#+PROPERTY: header-args:matlab+ :eval no-export
    -#+PROPERTY: header-args:matlab+ :noweb yes
    -#+PROPERTY: header-args:matlab+ :mkdirp yes
    -#+PROPERTY: header-args:matlab+ :output-dir ${2:figs}
    -$0
    -
    -
    -
    -
    - -
    -

    Mdescription

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Measurement-Description
    -# --
    -* Measurement description
    -** Setup                                                             :ignore:
    -*Setup*:
    -
    -** Goal                                                              :ignore:
    -*Goal*:
    -
    -** Measurements                                                      :ignore:
    -*Measurements*:
    -
    -Three measurements are done:
    -| Measurement File        | Description                  |
    -|-------------------------+------------------------------|
    -| =mat/data_${1:001}.mat= | $2                           |
    -
    -Each of the measurement =mat= file contains one =data= array with 3 columns:
    -| Column number | Description       |
    -|---------------+-------------------|
    -|             1 | $3                |
    -|             2 | $4                |
    -|             3 | Time              |
    -
    -$0
    -
    -
    -
    -
    - -
    -

    Mfigure

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Matlab-Figure
    -# --
    -#+header: :tangle no :exports results :results none :noweb yes
    -#+begin_src matlab :var filepath="${2:figs}/$1.pdf" :var figsize="${3:full-tall}" :post pdf2svg(file=*this*, ext="png")
    -  <<plt-matlab>>$0
    -#+end_src
    -
    -#+name: fig:$1
    -#+caption: ${4:caption}${5: ([[./figs/$1.png][png]], [[./figs/$1.pdf][pdf]])}
    -[[file:$2/$1.png]]
    -
    -
    -
    -
    - -
    -

    Mfunction

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Matlab-Function
    -# --
    -* ${1:Function Name}
    -:PROPERTIES:
    -:header-args:matlab+: :tangle src/${2:matlab_file_name}.m
    -:header-args:matlab+: :comments none :mkdirp yes :eval no
    -:END:
    -<<sec:$2>>
    -
    -This Matlab function is accessible [[file:src/$2.m][here]].
    -
    -#+begin_src matlab
    -  function [${4:in_data}] = $2(${3:in_data})
    -  % $2 - $0
    -  %
    -  % Syntax: [$4] = $2($3)
    -  %
    -  % Inputs:
    -  %    - $3 -
    -  %
    -  % Outputs:
    -  %    - $4 -
    -
    -  end
    -#+end_src
    -
    -
    -
    -
    - -
    -

    Mheader

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Matlab-Header
    -# --
    -* ${1:Heading Name}
    -:PROPERTIES:
    -:header-args:matlab+: :tangle matlab/${2:matlab_file_name}.m
    -:header-args:matlab+: :comments org :mkdirp yes
    -:END:
    -<<sec:$2>>
    -
    -** ZIP file containing the data and matlab files                     :ignore:
    -#+begin_src bash :exports none :results none
    -  if [ matlab/$2.m -nt data/$2.zip ]; then
    -    cp matlab/$2.m $2.m;
    -    zip data/$2 \
    -        mat/data.mat \
    -        $2.m
    -    rm $2.m;
    -  fi
    -#+end_src
    -
    -#+begin_note
    -  All the files (data and Matlab scripts) are accessible [[file:data/$2.zip][here]].
    -#+end_note
    -
    -$0
    -
    -
    -
    -
    - -
    -

    Minipage

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :minipage
    -# --
    -#+BEGIN_EXPORT latex
    -\begin{figure}[htbp]
    -\centering
    -\begin{minipage}[t]{0.49\linewidth}
    -#+END_EXPORT
    -#+attr_latex: :float nil :width 0.95\linewidth
    -$0
    -#+BEGIN_EXPORT latex
    -\end{minipage}%
    -\hfill%
    -\begin{minipage}[t]{0.49\linewidth}
    -#+END_EXPORT
    -#+attr_latex: :float nil :width 0.95\linewidth
    -
    -#+BEGIN_EXPORT latex
    -\end{minipage}
    -\end{figure}
    -#+END_EXPORT
    -
    -
    -
    -
    - -
    -

    Minit

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Matlab-Init
    -# --
    -** Matlab Init                                             :noexport:ignore:
    -#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
    -  <<matlab-dir>>
    -#+end_src
    -
    -#+begin_src matlab :exports none :results silent :noweb yes
    -  <<matlab-init>>
    -#+end_src
    -
    -$0
    -
    -
    -
    -
    - -
    -

    Mtable

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Matlab-Table
    -# --
    -#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
    -  data2orgtable(${1:data}, {${2:'rowlabel'}}, {${3:'collabel'}}, ' %.1f ');
    -#+end_src
    -$0
    -
    -
    -
    -
    - -
    -

    Multicolumn

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Multcolumn
    -# --
    -#+attr_latex: :float multicolumn
    -$0
    -
    -
    -
    -
    - -
    -

    Subfigure

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Subfigure
    -# --
    -#+name: fig:${1:figure_name}
    -#+caption: ${2:figure caption}
    -#+attr_latex: :environment subfigure :width 0.49\linewidth :align c
    -| file:${3:sub_fig_name}.${4:pdf}       | file:${5:sub_fig_name}.${6:pdf} |
    -| <<fig:$3>> ${7:sub figure caption}    | <<fig:$5>> ${8:sub figure caption}    |
    -$0
    -
    -
    -
    -
    - -
    -

    Table

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Table
    -# --
    -#+name: tab:${1:table_name}
    -#+caption: ${2:Table caption}
    -#+attr_latex: :environment tabularx :width ${3:\linewidth} :align ${4:lXX}
    -#+attr_latex: :center t :booktabs t :float t
    -| $0  |   |   |
    -|---+---+---|
    -|   |   |   |
    -
    -
    -
    -
    - -
    -

    Tikz

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Tikz figure
    -# --
    -#+begin_src latex :file ${1:figure_name}.pdf :post pdf2svg(file=*this*, ext="png") :exports both
    -  \begin{tikzpicture}
    -    $0
    -  \end{tikzpicture}
    -#+end_src
    -
    -
    -
    -
    - -
    -

    Tikzfig

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Tikz Figure
    -# --
    -#+NAME: fig:${1:figure_name}
    -#+HEADER: :headers '("\\\\usepackage{tikz}" "\\\\usepackage{import}" "\\\\import{$HOME/Cloud/thesis/LaTeX/}{config.tex}")
    -#+HEADER: :imagemagick t :fit yes :iminoptions -scale 100% -density 150 :imoutoptions -quality 100
    -#+HEADER: :results raw replace :buffer no :eval no-export :exports both :mkdirp yes
    -#+HEADER: :output-dir ${2:figs}
    -#+begin_src latex :file $1.pdf :post pdf2svg(file=*this*, ext="png") :exports both
    -  \begin{tikzpicture}
    -    $0
    -  \end{tikzpicture}
    -#+end_src
    -
    -#+NAME: fig:$1
    -#+CAPTION: ${3:Caption}
    -#+RESULTS: fig:$1
    -
    -
    -
    -
    - -
    -

    Tikzheader

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Tikz Header
    -# --
    -* ${1:Title/Description of the figure}
    -#+begin_src latex :file ${2:figure_name}.pdf :tangle figs/$2.tex :exports ${3:both}
    -  \begin{tikzpicture}
    -    $0
    -  \end{tikzpicture}
    -#+end_src
    -
    -#+name: fig:$2
    -#+caption: $1 ([[./figs/$2.png][png]], [[./figs/$2.pdf][pdf]], [[./figs/$2.tex][tex]]).
    -#+RESULTS:
    -[[file:./figs/$2.png]]
    -
    -
    -
    -
    - -
    -

    User-config

    -
    -
    -
    # -*- mode: snippet -*-
    -# name: user-config
    -# key: uc
    -# --
    -#+begin_src emacs-lisp :tangle user-config.el
    -$1
    -#+end_src
    -
    -
    -
    -
    - -
    -

    User-init

    -
    -
    -
    # -*- mode: snippet -*-
    -# name: user-init
    -# key: ui
    -# --
    -#+begin_src emacs-lisp :tangle user-init.el
    -$1
    -#+end_src
    -
    -
    -
    -
    - -
    -

    Wrap

    -
    -
    -
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    -#name :Wrap
    -# --
    -#+attr_latex: :float wrap
    -$0
    -
    -
    -
    -
    -
    -

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:39

    diff --git a/docs/emacs-library-babel.html b/docs/emacs-library-babel.html new file mode 100644 index 0000000..d2a4caa --- /dev/null +++ b/docs/emacs-library-babel.html @@ -0,0 +1,115 @@ + + + + + + +My Own Library of Babel + + + + +
    +

    My Own Library of Babel

    + + +
    +

    get-password - Get Password from pass

    +
    +
    +
    pass $passname | sed -n 1p
    +
    +
    +
    +
    + +
    +

    pdf2svg - Export to pdf/png/svg at the same time

    +
    +
    +
    _mydir="$(pwd)";
    +file=$(echo "$file" | cut -f 2- -d ':');
    +_figdir=$(dirname "$file");
    +cd $_figdir;
    +filename=$(echo "${file##*/}" | cut -f 1 -d '.');
    +pdftocairo -png -transp -singlefile "$filename.pdf";
    +pdftocairo -svg "$filename.pdf";
    +cd "$_mydir";
    +echo "[[file:$_figdir/$filename.$ext]]"
    +
    +
    +
    +
    + +
    +

    addhdr - Add hline to tables

    +
    +
    +
    (cons (car tbl) (cons 'hline (cdr tbl)))
    +
    +
    +
    +
    + +
    +

    Matlab Related

    +
    +
    +
    +

    matlab-dir Go to current directory

    +
    + +
    +

    matlab-init Initialize matlab

    +
    + +
    +

    plt-matlab Plot figures

    +
    +

    +Some variable can be set by block that expands this org source code block: +

    +
      +
    • path: specify the path of the figure including the file extension. Can be relative or absolute. If not provided, it will create the figure in the /tmp folder
    • +
    • fig_size: can specify the size of the figure. If not specify, default will be applied.
    • +
    + +
    +
    if ~exist('filepath') || length(filepath) < 2
    +  symbols = ['a':'z' 'A':'Z' '0':'9'];
    +  random_string = symbols(randi(numel(symbols),[1 5]));
    +  filepath = ['/tmp/matlab-fig-', random_string];
    +end
    +
    +size_strings = strsplit(figsize, '-');
    +
    +ans = exportFig(filepath, 'width', size_strings{1}, 'height', size_strings{2});
    +
    +
    +
    +
    +
    +
    +
    +

    Author: Thomas Dehaeze

    +

    Created: 2020-05-26 mar. 08:39

    +
    + + diff --git a/docs/emacs-snippets.html b/docs/emacs-snippets.html new file mode 100644 index 0000000..f3176a4 --- /dev/null +++ b/docs/emacs-snippets.html @@ -0,0 +1,812 @@ + + + + + + +Doom Emacs Configuration + + + + + + + + + + +
    + UP + | + HOME +
    +

    Doom Emacs Configuration

    + + +
    +

    LaTeX

    +
    +
    +
    +

    Coordinate

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :coordinate
    +# --
    +\coordinate[${1:->}] (${2:name}) at (${3:pointcoordinate});
    +$0
    +
    +
    +
    +
    + +
    +

    Draw

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :draw
    +# --
    +\draw[${1:->}] (${2:point1}) -- (${3:point2});
    +$0
    +
    +
    +
    +
    + +
    +

    Node

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :node
    +# --
    +node[${1:below right}] (${2:name}) {${3:label}};
    +$0
    +
    +
    +
    +
    + +
    +

    Path

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :path
    +# --
    +\path[${1}] (${2:point1}) -- (${3:point2});
    +$0
    +
    +
    +
    +
    +
    + +
    +

    Matlab

    +
    +
    +
    +

    Clear

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :clear and close all
    +# --
    +clear; close all; clc;
    +$0
    +
    +
    +
    +
    + +
    +

    Function

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :function
    +# --
    +function [${4:outputs}] = ${1:functionName}(${2:inputs}, ${3:opts_param})
    +% $1 - Description
    +%
    +% Syntax: $1($2, $3)
    +%
    +% Inputs:
    +%    - $2 -
    +%    - $3 - Optionals parameters: structure with the following fields:
    +%        -
    +%
    +% Outputs:
    +%    - $4 -
    +
    +%% Default value for opts
    +opts = struct(...
    +    '${5:outputs}', ${6:default_value} ...
    +);
    +
    +if exist('opts_param','var')
    +    for opt = fieldnames($3)'
    +        if sum(strcmp(fieldnames(opts), opt{1})) == 1
    +            opts.(opt{1}) = $3.(opt{1});
    +        else
    +            warning(sprintf('%s is not a valid option.', opt{1}));
    +        end
    +    end
    +end
    +
    +$0
    +
    +
    +
    +
    +
    + +
    +

    Org Mode

    +
    +
    +
    +

    Begin

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :LaTeX Environment
    +# --
    +\begin{${1:equation}}
    +  $0
    +\end{$1}
    +
    +
    +
    +
    + +
    +

    Caption

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Caption
    +# --
    +#+caption: $0
    +
    +
    +
    +
    + +
    +

    Block

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Org-Mode Block
    +#key: block
    +# --
    +#+begin_${1:$$(let ((type (yas-choose-value '("src" "example" "quote" "verse" "center" "latex" "html" "ascii"))))
    +               (if type (concat type (if (equal type "src")
    +                                         (concat " " (yas-choose-value '("emacs-lisp" "latex" "python" "sh" "matlab")))))))}
    +$0
    +#+end_${1:$(car (split-string yas-text))}
    +
    +
    +
    +
    + +
    +

    Custom Box

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Custom Box
    +# --
    +#+attr_latex: :options [$1]{${2:blue}}{${3:ams nodisplayskip}}
    +#+begin_cbox
    +$0
    +#+end_cbox
    +
    +
    +
    +
    + +
    +

    Latex Class

    +
    +
    +
    #name: latex-class
    +#key: lc
    +#expand-env: ((classes (mapcar 'car org-latex-classes)))
    +# --
    +#+latex_class: ${1:$$(yas-choose-value classes)}
    +$0
    +
    +
    +
    +
    + +
    +

    Bibliography with completion

    +
    +
    +
    #name: bibliography with completion
    +#key: bib
    +# --
    +bibliography:${1:$$(yas-choose-value (org-ref-find-bibliography))}
    +
    +
    +
    +
    + +
    +

    Cite

    +
    +
    +
    #name: org-ref cite link
    +#key: cite
    +# --
    +cite:${1:$$(completing-read
    +       "bibtex key: "
    +       (let ((bibtex-files (org-ref-find-bibliography)))(bibtex-global-key-alist)))}
    +
    +
    +
    +
    + +
    +

    Ref

    +
    +
    +
    #name: org-ref ref link with completion
    +#key: ref
    +# --
    +ref:${1:$$(completing-read "label: " (org-ref-get-labels))}
    +
    +
    +
    +
    + +
    +

    Beamer - CBOX

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Beamer Custom Box
    +# --
    +*** ${1:@@latex:@@}           :B_cbox:
    +,:PROPERTIES:
    +:BEAMER_env: cbox
    +:BEAMER_opt: {${2:blue}}{${3:ams nodisplayskip}}
    +:END:
    +
    +$0
    +
    +
    +
    +
    + +
    +

    Code

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Code
    +# --
    +#+caption: ${1:Listing Caption}
    +#+label: lst:${2:listing_name}
    +#+begin_src ${3:listing_language}
    +$0
    +#+end_src
    +
    +
    +
    +
    + +
    +

    Equation

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Equation
    +# --
    +#+name: eq:${1:equation_name}
    +\begin{equation}
    +$0
    +\end{equation}
    +
    +
    +
    +
    + +
    +

    Figure

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Figure
    +# --
    +#+name: fig:${1:figure_name}
    +#+caption: ${2:Figure caption}
    +[[file:${3:figs/}$1.${4:pdf}]]
    +$0
    +
    +
    +
    +
    + +
    +

    Frac

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :LaTeX Fraction
    +# --
    +\frac{$1}{$2} $0
    +
    +
    +
    +
    + +
    +

    Left

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Left Right mathematical delimitations
    +# --
    +\left$1 $0 \right$2
    +
    +
    +
    +
    + +
    +

    Minipage

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :minipage
    +# --
    +#+BEGIN_EXPORT latex
    +\begin{figure}[htbp]
    +\centering
    +\begin{minipage}[t]{0.49\linewidth}
    +#+END_EXPORT
    +#+attr_latex: :float nil :width 0.95\linewidth
    +$0
    +#+BEGIN_EXPORT latex
    +\end{minipage}%
    +\hfill%
    +\begin{minipage}[t]{0.49\linewidth}
    +#+END_EXPORT
    +#+attr_latex: :float nil :width 0.95\linewidth
    +
    +#+BEGIN_EXPORT latex
    +\end{minipage}
    +\end{figure}
    +#+END_EXPORT
    +
    +
    +
    +
    + +
    +

    Multicolumn

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Multcolumn
    +# --
    +#+attr_latex: :float multicolumn
    +$0
    +
    +
    +
    +
    + +
    +

    Subfigure

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Subfigure
    +# --
    +#+name: fig:${1:figure_name}
    +#+caption: ${2:figure caption}
    +#+attr_latex: :environment subfigure :width 0.49\linewidth :align c
    +| file:${3:sub_fig_name}.${4:pdf}       | file:${5:sub_fig_name}.${6:pdf} |
    +| <<fig:$3>> ${7:sub figure caption}    | <<fig:$5>> ${8:sub figure caption}    |
    +$0
    +
    +
    +
    +
    + +
    +

    Table

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Table
    +# --
    +#+name: tab:${1:table_name}
    +#+caption: ${2:Table caption}
    +#+attr_latex: :environment tabularx :width ${3:\linewidth} :align ${4:lXX}
    +#+attr_latex: :center t :booktabs t :float t
    +| $0  |   |   |
    +|---+---+---|
    +|   |   |   |
    +
    +
    +
    +
    + +
    +

    Tikz

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Tikz figure
    +# --
    +#+begin_src latex :file ${1:figure_name}.pdf :post pdf2svg(file=*this*, ext="png") :exports both
    +  \begin{tikzpicture}
    +    $0
    +  \end{tikzpicture}
    +#+end_src
    +
    +
    +
    +
    + +
    +

    Tikzfig

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Tikz Figure
    +# --
    +#+NAME: fig:${1:figure_name}
    +#+HEADER: :headers '("\\\\usepackage{tikz}" "\\\\usepackage{import}" "\\\\import{$HOME/Cloud/thesis/LaTeX/}{config.tex}")
    +#+HEADER: :imagemagick t :fit yes :iminoptions -scale 100% -density 150 :imoutoptions -quality 100
    +#+HEADER: :results raw replace :buffer no :eval no-export :exports both :mkdirp yes
    +#+HEADER: :output-dir ${2:figs}
    +#+begin_src latex :file $1.pdf :post pdf2svg(file=*this*, ext="png") :exports both
    +  \begin{tikzpicture}
    +    $0
    +  \end{tikzpicture}
    +#+end_src
    +
    +#+NAME: fig:$1
    +#+CAPTION: ${3:Caption}
    +#+RESULTS: fig:$1
    +
    +
    +
    +
    + +
    +

    Tikzheader

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Tikz Header
    +# --
    +* ${1:Title/Description of the figure}
    +#+begin_src latex :file ${2:figure_name}.pdf :tangle figs/$2.tex :exports ${3:both}
    +  \begin{tikzpicture}
    +    $0
    +  \end{tikzpicture}
    +#+end_src
    +
    +#+name: fig:$2
    +#+caption: $1 ([[./figs/$2.png][png]], [[./figs/$2.pdf][pdf]], [[./figs/$2.tex][tex]]).
    +#+RESULTS:
    +[[file:./figs/$2.png]]
    +
    +
    +
    +
    + +
    +

    User-config

    +
    +
    +
    # -*- mode: snippet -*-
    +# name: user-config
    +# key: uc
    +# --
    +#+begin_src emacs-lisp :tangle user-config.el
    +$1
    +#+end_src
    +
    +
    +
    +
    + +
    +

    User-init

    +
    +

    +#+begin_src conf :tangle ~/.config/doom/snippets/org-mode/user-init +

    + +

    +,#+begin_src emacs-lisp :tangle user-init.el +$1 +,#+end_src +#+end_Sec +

    +
    +
    + +
    +

    Wrap

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Wrap
    +# --
    +#+attr_latex: :float wrap
    +$0
    +
    +
    +
    +
    + +
    +

    Matlab Specific

    +
    +
    +
    +

    Mconfig

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Matlab-Configuration-Header
    +# --
    +#+PROPERTY: header-args:matlab  :session *MATLAB*
    +#+PROPERTY: header-args:matlab+ :tangle ${1:filename}.m
    +#+PROPERTY: header-args:matlab+ :comments org
    +#+PROPERTY: header-args:matlab+ :exports both
    +#+PROPERTY: header-args:matlab+ :results none
    +#+PROPERTY: header-args:matlab+ :eval no-export
    +#+PROPERTY: header-args:matlab+ :noweb yes
    +#+PROPERTY: header-args:matlab+ :mkdirp yes
    +#+PROPERTY: header-args:matlab+ :output-dir ${2:figs}
    +$0
    +
    +
    +
    +
    + +
    +

    Mdescription

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Measurement-Description
    +# --
    +* Measurement description
    +** Setup                                                             :ignore:
    +*Setup*:
    +
    +** Goal                                                              :ignore:
    +*Goal*:
    +
    +** Measurements                                                      :ignore:
    +*Measurements*:
    +
    +Three measurements are done:
    +| Measurement File        | Description                  |
    +|-------------------------+------------------------------|
    +| =mat/data_${1:001}.mat= | $2                           |
    +
    +Each of the measurement =mat= file contains one =data= array with 3 columns:
    +| Column number | Description       |
    +|---------------+-------------------|
    +|             1 | $3                |
    +|             2 | $4                |
    +|             3 | Time              |
    +
    +$0
    +
    +
    +
    +
    + +
    +

    Mfigure

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Matlab-Figure
    +# --
    +#+begin_src matlab :tangle no :exports results :results file replace
    +   exportFig('figs/${1:filename}.pdf', 'width', '${2:full}', 'height', '${3:full}');
    +#+end_src
    +
    +#+name: fig:$1
    +#+caption: $0
    +#+RESULTS:
    +[[file:figs/$1.png]]
    +
    +
    +
    +
    + +
    +

    Mfunction

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Matlab-Function
    +# --
    +* ${1:Function Name}
    +:PROPERTIES:
    +:header-args:matlab+: :tangle src/${2:matlab_file_name}.m
    +:header-args:matlab+: :comments none :mkdirp yes :eval no
    +:END:
    +<<sec:$2>>
    +
    +This Matlab function is accessible [[file:src/$2.m][here]].
    +
    +#+begin_src matlab
    +  function [${4:in_data}] = $2(${3:in_data})
    +  % $2 - $0
    +  %
    +  % Syntax: [$4] = $2($3)
    +  %
    +  % Inputs:
    +  %    - $3 -
    +  %
    +  % Outputs:
    +  %    - $4 -
    +
    +  end
    +#+end_src
    +
    +
    +
    +
    + +
    +

    Mheader

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Matlab-Header
    +# --
    +* ${1:Heading Name}
    +:PROPERTIES:
    +:header-args:matlab+: :tangle matlab/${2:matlab_file_name}.m
    +:header-args:matlab+: :comments org :mkdirp yes
    +:END:
    +<<sec:$2>>
    +
    +** ZIP file containing the data and matlab files                     :ignore:
    +#+begin_src bash :exports none :results none
    +  if [ matlab/$2.m -nt data/$2.zip ]; then
    +    cp matlab/$2.m $2.m;
    +    zip data/$2 \
    +        mat/data.mat \
    +        $2.m
    +    rm $2.m;
    +  fi
    +#+end_src
    +
    +#+begin_note
    +  All the files (data and Matlab scripts) are accessible [[file:data/$2.zip][here]].
    +#+end_note
    +
    +$0
    +
    +
    +
    +
    + +
    +

    Minit

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Matlab-Init
    +# --
    +** Matlab Init                                             :noexport:ignore:
    +#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
    +  <<matlab-dir>>
    +#+end_src
    +
    +#+begin_src matlab :exports none :results silent :noweb yes
    +  <<matlab-init>>
    +#+end_src
    +
    +$0
    +
    +
    +
    +
    + +
    +

    Mtable

    +
    +
    +
    #contributor : Thomas Dehaeze <dehaeze.thomas@gmail.com>
    +#name :Matlab-Table
    +# --
    +#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
    +  data2orgtable(${1:data}, {${2:'rowlabel'}}, {${3:'collabel'}}, ' %.1f ');
    +#+end_src
    +$0
    +
    +
    +
    +
    +
    +
    +
    +
    +

    Author: Dehaeze Thomas

    +

    Created: 2020-05-26 mar. 08:39

    +
    + + diff --git a/docs/i3.html b/docs/i3.html index 079cb3c..18019b4 100644 --- a/docs/i3.html +++ b/docs/i3.html @@ -1,229 +1,19 @@ - - + - I3 Configuration - -
    @@ -258,9 +48,8 @@
    -
    -
    # i3 config file (v4)
    +
    # i3 config file (v4)
     
    @@ -281,8 +70,8 @@ Set mod key (Mod1=<Alt>, Mod4=<Super>)

    Border Style

    -
    # Use custom colors for black
    -new_window pixel 1
    +
    # Use custom colors for black
    +new_window pixel 1
     new_float normal
     
    @@ -301,7 +90,7 @@ Hide borders

    Font for window titles

    -
    font Hack Nerd Font 11
    +
    font Hack Nerd Font 11
     
    @@ -311,22 +100,22 @@ Hide borders

    Colors Variables

    -
    set_from_resource $bg         color0  #000000
    -set_from_resource $darkred    color1  #000000
    -set_from_resource $darkgreen  color2  #000000
    -set_from_resource $darkyellow color3  #000000
    -set_from_resource $darkblue   color4  #000000
    -set_from_resource $darkpurple color5  #000000
    -set_from_resource $darkaqua   color6  #000000
    -set_from_resource $darkgray   color7  #000000
    -set_from_resource $gray       color8  #000000
    -set_from_resource $red        color9  #000000
    -set_from_resource $green      color10 #000000
    -set_from_resource $yellow     color11 #000000
    -set_from_resource $blue       color12 #000000
    -set_from_resource $purple     color13 #000000
    -set_from_resource $aqua       color14 #000000
    -set_from_resource $fg         color15 #000000
    +
    set_from_resource $bg         color0  #000000
    +set_from_resource $darkred    color1  #000000
    +set_from_resource $darkgreen  color2  #000000
    +set_from_resource $darkyellow color3  #000000
    +set_from_resource $darkblue   color4  #000000
    +set_from_resource $darkpurple color5  #000000
    +set_from_resource $darkaqua   color6  #000000
    +set_from_resource $darkgray   color7  #000000
    +set_from_resource $gray       color8  #000000
    +set_from_resource $red        color9  #000000
    +set_from_resource $green      color10 #000000
    +set_from_resource $yellow     color11 #000000
    +set_from_resource $blue       color12 #000000
    +set_from_resource $purple     color13 #000000
    +set_from_resource $aqua       color14 #000000
    +set_from_resource $fg         color15 #000000
     
    @@ -336,7 +125,7 @@ set_from_resource $fg color15 #Theme colors
    -
    # class                 border  backgr. text    indic.   child_border
    +
    # class                 border  backgr. text    indic.   child_border
     client.focused          $darkaqua $darkaqua $fg  $bg
     client.focused_inactive $bg    $bg    $fg     $bg
     client.unfocused        $bg    $bg    $fg     $bg
    @@ -370,7 +159,7 @@ Layout mode for new containers
     

    Border

    -
    default_border pixel 1
    +
    default_border pixel 1
     
    @@ -380,13 +169,13 @@ Layout mode for new containers

    Settings for i3-gaps

    -
    # for_window [class=".*"] border pixel 0
    +
    # for_window [class=".*"] border pixel 0
     
    -
    gaps inner 10
    -gaps outer 2
    +
    gaps inner 10
    +gaps outer 2
     
    @@ -400,14 +189,14 @@ To display names or symbols instead of plain workspace numbers you can use somet

    -
    set $ws1 1
    -set $ws2 2
    -set $ws3 3
    -set $ws4 4
    -set $ws5 5
    -set $ws6 6
    -set $ws7 7
    -set $ws8 8
    +
    set $ws1 1
    +set $ws2 2
    +set $ws3 3
    +set $ws4 4
    +set $ws5 5
    +set $ws6 6
    +set $ws7 7
    +set $ws8 8
     
    @@ -441,9 +230,9 @@ set $ws8 8

    Open applications on specific workspaces

    -
    assign[title="^Fig"] $ws6 # Matlab Figures
    -for_window [title="^Fig"] layout tabbed
    -assign[title="^HG_Peer"] $ws6 # Name of window when export figure with matlab
    +
    assign[title="^Fig"] $ws6 # Matlab Figures
    +for_window [title="^Fig"] layout tabbed
    +assign[title="^HG_Peer"] $ws6 # Name of window when export figure with matlab
     
    @@ -453,20 +242,22 @@ set $ws8 8

    Open specific applications in floating mode

    -
    for_window [title="File Transfer*"] floating enable
    -for_window [class="GParted"] floating enable border normal
    -for_window [class="Lightdm-settings"] floating enable
    -for_window [class="Lxappearance"] floating enable sticky enable border normal
    -for_window [class="Pavucontrol"] floating enable
    -for_window [class="Arandr"] floating enable
    -for_window [class="Simple-scan"] floating enable border normal
    -for_window [class="(?i)System-config-printer.py"] floating enable border normal
    -for_window [class="Xfburn"] floating enable
    -for_window [title="^Documentation -"] floating enable border normal
    -for_window [class="Yad"] floating enable
    -for_window [title="Bluetooth Devices"] floating enable
    -for_window [title="Simulink Library Browser"] floating enable
    -for_window [class="Floating"] floating enable, resize set 800 600, move position 1100 460
    +
    for_window [title="File Transfer*"] floating enable
    +for_window [class="GParted"] floating enable border normal
    +for_window [class="Lightdm-settings"] floating enable
    +for_window [class="Lxappearance"] floating enable sticky enable border normal
    +for_window [class="Pavucontrol"] floating enable
    +for_window [class="Arandr"] floating enable
    +for_window [class="Simple-scan"] floating enable border normal
    +for_window [class="(?i)System-config-printer.py"] floating enable border normal
    +for_window [class="Xfburn"] floating enable
    +for_window [title="^Documentation -"] floating enable border normal
    +for_window [class="Yad"] floating enable
    +for_window [title="Bluetooth Devices"] floating enable
    +for_window [title="Simulink Library Browser"] floating enable
    +for_window [class="Floating"] floating enable, resize set 800 600, move position 1100 460
    +for_window [class="Sxiv"] floating enable, resize set 800 600, move position center
    +for_window [title="nmtui"] floating enable, resize set 800 600
     
    @@ -499,7 +290,7 @@ If there are multiple scratchpad windows, this command cycles through them.

    Run Polybar and SXHKD

    -
    exec --no-startup-id sxhkd -m 1 -c ~/.config/sxhkd/sxhkdrc.i3
    +
    exec --no-startup-id sxhkd -m 1 -c ~/.config/sxhkd/sxhkdrc.i3
     exec --no-startup-id $HOME/.config/polybar/scripts/launch.sh
     
    @@ -508,7 +299,7 @@ exec --no-startup-id $HOME/.config/polybar/scripts/launch.sh

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:40

    diff --git a/docs/index.html b/docs/index.html index 9d20fa4..068d603 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,229 +1,19 @@ - - + - Dotfiles - Manjaro Linux - -
    @@ -248,7 +38,6 @@
    -

    The general installation process is described here.

    @@ -349,7 +138,6 @@ The general installation process is described here.
  • Desktop Applications
  • Matlab
  • Some useful Binaries
  • -
  • Some useful Scripts
  • Git Configuration
  • GTK
  • Other Config
  • @@ -359,7 +147,7 @@ The general installation process is described here.

    Author: Dehaeze Thomas

    -

    Created: 2020-03-19 jeu. 10:46

    +

    Created: 2020-05-26 mar. 08:40

    diff --git a/docs/install.html b/docs/install.html index a206b5d..bad217d 100644 --- a/docs/install.html +++ b/docs/install.html @@ -1,223 +1,13 @@ - - + - Installation - - - +
    @@ -228,18 +18,18 @@
    -
    -

    Installation

    -
    +
    +

    Installation

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

    CheatSheet

    -
    +
    +

    CheatSheet

    +
    @@ -841,19 +630,19 @@ To check all installed packages:

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    yay -S git
    +
    yay -S git
     
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    Git Configuration:

    @@ -871,9 +660,9 @@ To check all installed packages: https://github.com/so-fancy/diff-so-fancy

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S diff-so-fancy
     
    @@ -881,11 +670,11 @@ To check all installed packages:
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +
    -
    git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"
    +
    git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"
     
    @@ -913,9 +702,9 @@ This is explained in a further part: Integration of Pass w

    Termite

    -
    @@ -1007,9 +796,9 @@ This is explained in a further part: Integration of Pass w

    Unicode Rxvt

    -
    @@ -1160,9 +949,9 @@ Most of Urxvt configuration is done in ~/.Xresources

    Fonts

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S nerd-fonts-complete
     
    @@ -1215,9 +1004,9 @@ List all fonts available: fc-list
    -
    -

    Text Editors

    -
    +
    +

    Text Editors

    +

    Neovim

    @@ -1227,9 +1016,9 @@ List all fonts available: fc-list

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S neovim
     
    @@ -1237,9 +1026,9 @@ List all fonts available: fc-list
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    Vim configuration

    @@ -1255,9 +1044,9 @@ List all fonts available: fc-list

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S emacs
     
    @@ -1265,9 +1054,9 @@ List all fonts available: fc-list
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    Doom Emacs configuration

    @@ -1294,7 +1083,7 @@ List all fonts available: fc-list

    Generating 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"
     
    @@ -1304,7 +1093,7 @@ List all fonts available: fc-list

    Start the ssh-agent in the background

    -
    eval "$(ssh-agent -s)"
    +
    eval "$(ssh-agent -s)"
     
    @@ -1357,8 +1146,8 @@ Edit the following file ~/.gnupg/gpg-agent.conf

    -
    default-cache-ttl 60480000
    -max-cache-ttl 60480000
    +
    default-cache-ttl 60480000
    +max-cache-ttl 60480000
     
    @@ -1393,9 +1182,9 @@ Alternative:
    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S rofi
     
    @@ -1430,7 +1219,7 @@ Use sudo -A, that will open a rofi prompt to ask for the password. For that to work, we need to add the following code to ~/.profile:

    -
    export SUDO_ASKPASS=~/bin/askpass-rofi
    +
    export SUDO_ASKPASS=~/.local/bin/askpass-rofi
     
    @@ -1438,15 +1227,15 @@ 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/://)"
    +# 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/://)"
     
    @@ -1475,16 +1264,16 @@ rofi -dmenu \

    Initialize the password store as a git repository

    -
    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
     
    -
    -

    Gui Manager

    -
    +
    +

    Gui Manager

    +

    https://github.com/IJHack/qtpass

    @@ -1496,17 +1285,17 @@ pass git remote add origin https://github.com/tdeh
    -
    -

    Integration with Rofi

    -
    +
    +

    Integration with Rofi

    + -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S rofi-pass
     
    @@ -1549,9 +1338,9 @@ This is explained here. https://github.com/languitar/pass-git-helper

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S pass-git-helper
     
    @@ -1559,9 +1348,9 @@ This is explained here.
    -
    -

    Configuration

    -
    +
    +

    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:

    @@ -1625,9 +1414,9 @@ Bitwarden https://github.com/bitwarde

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    -

    Integration with Rofi

    -
    +
    +

    Integration with Rofi

    +
    -
    -

    Installation

    -
    +
    +

    Installation

    +
    -
    wget https://raw.githubusercontent.com/carnager/buku_run/master/buku_run -o ~/bin/buku_run
    -chmod +x ~/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

    @@ -1684,13 +1473,13 @@ 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
     

    -Then we create a script that will automatically add bookmarks.db and push to some repository: ~/scripts/buku_git_push.sh. +Then we create a script that will automatically add bookmarks.db and push to some repository: buku_git_push.

    @@ -1724,7 +1513,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
     
    @@ -1734,9 +1523,9 @@ And then browse to http://127.0.0.1:5001.
    -
    -

    Cheatsheet

    -
    +
    +

    Cheatsheet

    +
    @@ -1800,9 +1589,9 @@ And then browse to http://127.0.0.1:5001.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S qutebrowser
     
    @@ -1814,9 +1603,9 @@ And then browse to http://127.0.0.1:5001.

    View Pdf inside qutebrowser with pdfjs

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S pdfjs
     
    @@ -1824,9 +1613,9 @@ And then browse to http://127.0.0.1:5001.
    -
    -

    Usage

    -
    +
    +

    Usage

    +

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

    @@ -1980,9 +1769,9 @@ If sound is not working, should run pulseaudio --kill to kill the d

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S mpd
     
    @@ -2077,9 +1866,9 @@ If mopidy is used, MPD should be disabled. (systemctl disable --user mpd.s

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S ncmpcpp
     
    @@ -2097,9 +1886,9 @@ The key bindings can be configured here: ~/.ncmpcpp/bindings.
    -
    -

    Cheatsheet

    -
    +
    +

    Cheatsheet

    +

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

    @@ -2130,9 +1919,9 @@ The key bindings can be configured here: ~/.ncmpcpp/bindings.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S beets
     
    @@ -2140,18 +1929,18 @@ The key bindings can be configured here: ~/.ncmpcpp/bindings.
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    Configuration folder: ~/.config/beets/

    -
    -

    Cheatsheet

    -
    +
    +

    Cheatsheet

    +
    @@ -2186,9 +1975,9 @@ Configuration folder: ~/.config/beets/

    Media Player - MPV

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S mpv
     
    @@ -2205,9 +1994,9 @@ The configuration is set in /.config/mpv/input.conf.
    -
    -

    CheatSheet

    -
    +
    +

    CheatSheet

    +
    @@ -2235,9 +2024,9 @@ The configuration is set in /.config/mpv/input.conf.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S catt
     
    @@ -2284,7 +2073,7 @@ The configuration is set in /.config/mpv/input.conf.
    - + @@ -2454,9 +2243,9 @@ This looks for contacts in all indexed emails.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S weechat
     
    @@ -2500,7 +2289,7 @@ Then we install some dependencies
    - + @@ -2520,7 +2309,7 @@ Then we install some dependencies - + @@ -2542,34 +2331,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.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 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 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.bar.title.color_bg 31         #Or white if 31 does nothing
     
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    https://hugo.md/post/the-perfect-weechat-setup-2/ https://robots.thoughtbot.com/weechat-for-slacks-irc-gateway @@ -2612,8 +2401,8 @@ And enter is bound to magic_enter that directly sends the message i https://github.com/keith/edit-weechat

    -
    mkdir -p ~/.weechat/python/autoload
    -cd ~/.weechat/python/autoload
    +
    mkdir -p ~/.weechat/python/autoload
    +cd ~/.weechat/python/autoload
     wget https://raw.githubusercontent.com/keith/edit-weechat/master/edit.py
     
    @@ -2624,9 +2413,9 @@ Then, on weechat, type /edit.
    -
    -

    CheatSheet

    -
    +
    +

    CheatSheet

    +
    catt castsite https://en.wikipedia.org/wiki/Rickrollingcatt cast_site https://en.wikipedia.org/wiki/Rickrolling Cast website
    colorizenicks.pycolorize_nicks.py  
    colorizelines.plcolorize_lines.pl  
    @@ -2674,9 +2463,9 @@ Then, on weechat, type /edit.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S python2-websocket-client
     
    @@ -2684,9 +2473,9 @@ Then, on weechat, type /edit.
    -
    cd ~/.weechat/python
    +
    cd ~/.weechat/python
     wget https://raw.githubusercontent.com/wee-slack/wee-slack/master/wee_slack.py
    -ln -s ../wee_slack.py autoload
    +ln -s ../wee_slack.py autoload
     
    @@ -2792,9 +2581,9 @@ It runs weechat inside tmux.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S isync
     
    @@ -2802,9 +2591,9 @@ It runs weechat inside tmux.
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    ~/.mbsyncrc

    @@ -2819,7 +2608,7 @@ It runs weechat inside tmux.
    Retreive New mails
      -
    • ~/scripts/checkmail.sh
    • +
    • checkmail
    • ~/.config/systemd/user/checkmail.service
    • ~/.config/systemd/user/checkmail.timer
    @@ -2858,9 +2647,9 @@ systemctl --user start syncmail.timer

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S msmtp
     
    @@ -2886,9 +2675,9 @@ systemctl --user start syncmail.timer

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S neomutt
     
    @@ -2906,15 +2695,6 @@ systemctl --user start syncmail.timer
    -
    -

    Open PDF from mail

    -
    -

    -~/scripts/openfile.sh -

    -
    -
    -

    Open Url from mail

    @@ -2925,9 +2705,9 @@ systemctl --user start syncmail.timer
    -
    -

    Ressources

    -
    +
    +

    Ressources

    +
    @@ -2966,9 +2746,9 @@ Configuration files: https://github.com/ranger/ranger

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S ranger
     
    @@ -2976,9 +2756,9 @@ Configuration files:
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

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

    @@ -3026,9 +2806,9 @@ It works better with Urxvt.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S sxiv
     
    @@ -3046,9 +2826,9 @@ It works better with Urxvt.
    -
    -

    Cheatsheet

    -
    +
    +

    Cheatsheet

    +
    @@ -3122,9 +2902,9 @@ Configuration file: SXHKD.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S i3-gaps
     
    @@ -3132,9 +2912,9 @@ Configuration file: SXHKD.
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    ~/.i3/config

    @@ -3154,9 +2934,9 @@ Configuration file: SXHKD.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S polybar
     
    @@ -3177,9 +2957,9 @@ Configuration file: SXHKD.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S picom
     
    @@ -3187,9 +2967,9 @@ Configuration file: SXHKD.
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    ~/.config/picom/picom.conf

    @@ -3219,9 +2999,9 @@ Compton is run from .xprofile config in the background:

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S dunst dunstify
     
    @@ -3229,20 +3009,20 @@ Compton is run from .xprofile config in the background:
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    ~/.config/dunst/dunstrc

    -
    -

    Usage

    -
    +
    +

    Usage

    +
    -
    dunstify --replace=16549 "AppName" "Message"
    +
    dunstify --replace=16549 "AppName" "Message"
     
    @@ -3307,9 +3087,9 @@ Gtk2 themes are managed using the file ~/.gtkrc-2.0 while Gtk3 them

    -
    -

    Gui Manager

    -
    +
    +

    Gui Manager

    +

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

    @@ -3380,7 +3160,7 @@ Check the queue

    lpq
    -lpq -a # on all queues
    +lpq -a # on all queues
     
    @@ -3388,8 +3168,8 @@ lpq -a # on Clear the queue

    -
    lprm   # remove last entry only
    -lprm - # remove all entries
    +
    lprm   # remove last entry only
    +lprm - # remove all entries
     
    @@ -3477,11 +3257,11 @@ Stats about the printer

    yay -S tlp
    -sudo systemctl enable tlp
    -sudo systemctl start tlp
    -sudo systemctl enable tlp-sleep
    -sudo systemctl start tlp-sleep
    -sudo tlp start
    +sudo systemctl enable tlp
    +sudo systemctl start tlp
    +sudo systemctl enable tlp-sleep
    +sudo systemctl start tlp-sleep
    +sudo tlp start
     
    @@ -3490,8 +3270,8 @@ Stats about the printer

    yay -S thermald
    -sudo systemctl enable thermald
    -sudo systemctl start thermald
    +sudo systemctl enable thermald
    +sudo systemctl start thermald
     
    @@ -3563,13 +3343,13 @@ Bluetooth manager: https://
    -
    -

    LaTeX

    -
    +
    +

    LaTeX

    +
    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S texlive-most
     
    @@ -3614,9 +3394,9 @@ In order for LaTeX to be aware of new packages/classes, run sudo texhash
    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S mathpix-snipping-tool
     
    @@ -3638,9 +3418,9 @@ In order for LaTeX to be aware of new packages/classes, run sudo texhash
    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S insect
     
    @@ -3648,9 +3428,9 @@ In order for LaTeX to be aware of new packages/classes, run sudo texhash
    -
    -

    Usage

    -
    +
    +

    Usage

    +
    @@ -3689,9 +3469,9 @@ In order for LaTeX to be aware of new packages/classes, run sudo texhash -
    @@ -3985,9 +3765,9 @@ To check the status of the service:

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S khal
     
    @@ -4044,9 +3824,9 @@ On the phone:

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S newboat
     
    @@ -4054,9 +3834,9 @@ On the phone:
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    https://newsboat.org/releases/2.12/docs/newsboat.html ~/.newsboat/ @@ -4064,9 +3844,9 @@ On the phone:

    -
    -

    CheatSheet

    -
    +
    +

    CheatSheet

    +
    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S wunderline
     
    @@ -4101,9 +3881,9 @@ On the phone:
    -
    -

    Cheatsheet

    -
    +
    +

    Cheatsheet

    +

    Add a task with:

    @@ -4162,9 +3942,9 @@ Other commands: https://pwmt.org/projects/zathura/

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S zathura
     
    @@ -4184,18 +3964,18 @@ It seems that mupdf is better that poppler to view pdf.
    -
    -

    Configuration

    -
    +
    +

    Configuration

    +

    ~/.config/zathura/zathurarc

    -
    -

    Cheatsheet

    -
    +
    +

    Cheatsheet

    +
    @@ -4298,9 +4078,9 @@ pdfpc is a great tool for showing pdf presentations. It support: -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S pdfpc
     
    @@ -4318,9 +4098,9 @@ pdfpc is a great tool for showing pdf presentations. It support:
    -
    -

    Usage

    -
    +
    +

    Usage

    +
    pdfpc filename.pdf
     
    @@ -4343,10 +4123,10 @@ It seems the color is due to this part of the script. Should then source this fi

    -
    BASE16_SHELL="$HOME/.base16-manager/chriskempson/base16-shell/"
    -[ -n "$PS1" ] && \
    -    [ -s "$BASE16_SHELL/profile_helper.sh" ] && \
    -        eval "$("$BASE16_SHELL/profile_helper.sh")"
    +
    BASE16_SHELL="$HOME/.base16-manager/chriskempson/base16-shell/"
    +[ -n "$PS1" ] && \
    +    [ -s "$BASE16_SHELL/profile_helper.sh" ] && \
    +        eval "$("$BASE16_SHELL/profile_helper.sh")"
     
    @@ -4409,11 +4189,11 @@ Then we can use these colors multiple applications. This changes the shell colors. This should be added to ~/.bashrc:

    -
    # Base16 Shell
    -BASE16_SHELL="$HOME/.config/base16-shell/"
    -[ -n "$PS1" ] && \
    -    [ -s "$BASE16_SHELL/profile_helper.sh" ] && \
    -        eval "$("$BASE16_SHELL/profile_helper.sh")"
    +
    # Base16 Shell
    +BASE16_SHELL="$HOME/.config/base16-shell/"
    +[ -n "$PS1" ] && \
    +    [ -s "$BASE16_SHELL/profile_helper.sh" ] && \
    +        eval "$("$BASE16_SHELL/profile_helper.sh")"
     
    @@ -4453,9 +4233,9 @@ This help changes many applications colors at once.

    -
    -

    Installation

    -
    +
    +

    Installation

    +
    yay -S nordvpn-bin
     
    @@ -4463,20 +4243,20 @@ This help changes many applications colors at once.
    -
    -

    Configuration

    -
    +
    +

    Configuration

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

    Usage

    -
    +
    +

    Usage

    +
    @@ -4533,23 +4313,13 @@ This help changes many applications colors at once. -
    -

    Others

    -
    +
    +

    Others

    +

    Wallpaper: xwallpaper

    -
    -

    Reddit on terminal: rtv

    -
    -
    -
    yay -S rtv
    -
    -
    -
    -
    -

    Interact with API

    @@ -4563,16 +4333,27 @@ This help changes many applications colors at once.

    Take Screenshot

    -

    -https://github.com/naelstrof/maim -

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

    File transfer

    +
    +

    +https://github.com/schollz/croc +

    + +
    +
    yay -S croc
     
    @@ -4581,13 +4362,15 @@ This help changes many applications colors at once.

    Utilities

    @@ -4904,9 +4687,9 @@ Will create split1.pdf to split6.pdf files correspondi
    -
    -

    Others

    -
    +
    +

    Others

    +
    @@ -5154,9 +4937,9 @@ Use apack and aunpack:

    For loop

    -
    for file in ./*; do
    -  command ${file};
    -done
    +
    for file in ./*; do
    +  command ${file};
    +done
     
    @@ -5170,9 +4953,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
     
    @@ -5180,15 +4963,15 @@ To improve the startup time. To see next timers

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

    Ressources

    -
    +
    +

    Ressources

    +

    Dotfiles

    @@ -5242,9 +5025,9 @@ bfg - Removes large or troublesome blobs like git-filter-branch does, but faster
    -
    -

    Text Editors

    -
    +
    +

    Text Editors

    +

    aspell - Spell checker with better logic than ispell vim - Vi ’workalike’ with many additional features @@ -5253,8 +5036,8 @@ neovim - Ambitious Vim-fork focused on extensibility and agility

    -
    -

    LaTeX

    +
    +

    LaTeX

    Mutt

    @@ -5532,8 +5315,8 @@ moreutils - Collection of tools that nobody wrote when UNIX was young
    -

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Author: Thomas Dehaeze

    +

    Created: 2020-05-26 mar. 08:39

    diff --git a/docs/mail.html b/docs/mail.html index 294b7c5..b9bf14a 100644 --- a/docs/mail.html +++ b/docs/mail.html @@ -1,251 +1,19 @@ - - + - Mail Configuration - -
    @@ -261,8 +29,8 @@ for the JavaScript code in this tag.
  • Synchronize Mailboxes - Mbsync @@ -270,8 +38,8 @@ for the JavaScript code in this tag.
  • Send Mails - Msmtp
  • -
    -

    Gmail Account

    -
    +
    +

    Gmail Account

    +
    IMAPAccount gmail
     Host imap.gmail.com
     User dehaeze.thomas@gmail.com
    -PassCmd "pass email/dehaeze.thomas@gmail.com"
    +PassCmd "pass email/dehaeze.thomas@gmail.com"
     SSLType IMAPS
     AuthMechs LOGIN
     CertificateFile /etc/ssl/certs/ca-certificates.crt
    @@ -437,35 +205,35 @@ Path ~/.mail/gmail/
     Inbox ~/.mail/gmail/Inbox
     
     Channel gmail-Home
    -Master :gmail-remote:"INBOX"
    +Master :gmail-remote:"INBOX"
     Slave :gmail-local:Inbox
     
     Channel gmail-Drafts
    -Master :gmail-remote:"[Gmail]/Drafts"
    +Master :gmail-remote:"[Gmail]/Drafts"
     Slave :gmail-local:Drafts
     
     Channel gmail-Sent
    -Master :gmail-remote:"[Gmail]/Sent Mail"
    +Master :gmail-remote:"[Gmail]/Sent Mail"
     Slave :gmail-local:Sent
     
     Channel gmail-Trash
    -Master :gmail-remote:"[Gmail]/Trash"
    +Master :gmail-remote:"[Gmail]/Trash"
     Slave :gmail-local:Trash
     
     Channel gmail-All
    -Master :gmail-remote:"[Gmail]/All Mail"
    +Master :gmail-remote:"[Gmail]/All Mail"
     Slave :gmail-local:Archive
     
    -
    # Catch-all for everything else: note that the `Patterns` have to exclude both
    -# the remote and local names for all the folders we want to exclude (except
    -# "INBOX", which is special-cased, it would seem).
    +
    # Catch-all for everything else: note that the `Patterns` have to exclude both
    +# the remote and local names for all the folders we want to exclude (except
    +# "INBOX", which is special-cased, it would seem).
     Channel gmail
     Master :gmail-remote:
     Slave :gmail-local:
    -# Exclude everything under the internal [Gmail] folder, except the interesting folders
    +# Exclude everything under the internal [Gmail] folder, except the interesting folders
     Patterns *
     Patterns !INBOX
     Patterns ![Gmail]*
    @@ -479,9 +247,9 @@ Patterns !Starred
     
    -
    # For doing a quick sync of just the INBOX with `mbsync gmail-download`.
    +
    # For doing a quick sync of just the INBOX with `mbsync gmail-download`.
     Channel gmail-download
    -Master :gmail-remote:"INBOX"
    +Master :gmail-remote:"INBOX"
     Slave :gmail-local:Inbox
     Create Slave
     Expunge Slave
    @@ -491,14 +259,14 @@ Sync Pull
     
    -
    -

    ESRF Account

    -
    +
    +

    ESRF Account

    +
    IMAPAccount esrf
     Host imaps.esrf.fr
     User dehaeze
    -PassCmd "pass email/thomas.dehaeze@esrf.fr"
    +PassCmd "pass email/thomas.dehaeze@esrf.fr"
     SSLType IMAPS
     AuthMechs LOGIN
     
    @@ -513,23 +281,23 @@ Path ~/.mail/esrf/ Inbox ~/.mail/esrf/Inbox Channel esrf-Home -Master :esrf-remote:"Inbox" +Master :esrf-remote:"Inbox" Slave :esrf-local:Inbox Channel esrf-Drafts -Master :esrf-remote:"Drafts" +Master :esrf-remote:"Drafts" Slave :esrf-local:Drafts Channel esrf-Archive -Master :esrf-remote:"Archive" +Master :esrf-remote:"Archive" Slave :esrf-local:Archive Channel esrf-Sent -Master :esrf-remote:"Sent" +Master :esrf-remote:"Sent" Slave :esrf-local:Sent Channel esrf-Trash -Master :esrf-remote:"Trash" +Master :esrf-remote:"Trash" Slave :esrf-local:Trash
    @@ -546,7 +314,7 @@ For doing a quick sync of just the INBOX with `mbsync esrf-download`.

    Channel esrf-download
    -Master :esrf-remote:"INBOX"
    +Master :esrf-remote:"INBOX"
     Slave :esrf-local:Inbox
     Create Slave
     Expunge Slave
    @@ -563,7 +331,7 @@ Sync Pull
     
    IMAPAccount ulg
     Host mail.ulg.ac.be
     User thomas.dehaeze@doct.uliege.be
    -PassCmd "pass email/thomas.dehaeze@doct.uliege.be"
    +PassCmd "pass email/thomas.dehaeze@doct.uliege.be"
     SSLType IMAPS
     AuthMechs LOGIN
     
    @@ -578,23 +346,23 @@ Path ~/.mail/ulg/ Inbox ~/.mail/ulg/Inbox Channel ulg-Home -Master :ulg-remote:"Inbox" +Master :ulg-remote:"Inbox" Slave :ulg-local:Inbox Channel ulg-Drafts -Master :ulg-remote:"Drafts" +Master :ulg-remote:"Drafts" Slave :ulg-local:Drafts Channel ulg-Archive -Master :ulg-remote:"Archive" +Master :ulg-remote:"Archive" Slave :ulg-local:Archive Channel ulg-Sent -Master :ulg-remote:"Sent" +Master :ulg-remote:"Sent" Slave :ulg-local:Sent Channel ulg-Trash -Master :ulg-remote:"Trash" +Master :ulg-remote:"Trash" Slave :ulg-local:Trash
    @@ -611,7 +379,7 @@ For doing a quick sync of just the INBOX with `mbsync ulg-download`.

    Channel ulg-download
    -Master :ulg-remote:"Inbox"
    +Master :ulg-remote:"Inbox"
     Slave :ulg-local:Inbox
     Create Slave
     Expunge Slave
    @@ -628,7 +396,7 @@ Sync Pull
     
    IMAPAccount uliege
     Host mail.ulg.ac.be
     User tdehaeze@uliege.be
    -PassCmd "pass email/tdehaeze@uliege.be"
    +PassCmd "pass email/tdehaeze@uliege.be"
     SSLType IMAPS
     AuthMechs LOGIN
     
    @@ -643,23 +411,23 @@ Path ~/.mail/uliege/ Inbox ~/.mail/uliege/Inbox Channel uliege-Home -Master :uliege-remote:"Inbox" +Master :uliege-remote:"Inbox" Slave :uliege-local:Inbox Channel uliege-Drafts -Master :uliege-remote:"Drafts" +Master :uliege-remote:"Drafts" Slave :uliege-local:Drafts Channel uliege-Archive -Master :uliege-remote:"Archive" +Master :uliege-remote:"Archive" Slave :uliege-local:Archive Channel uliege-Sent -Master :uliege-remote:"Sent" +Master :uliege-remote:"Sent" Slave :uliege-local:Sent Channel uliege-Trash -Master :uliege-remote:"Trash" +Master :uliege-remote:"Trash" Slave :uliege-local:Trash
    @@ -676,7 +444,7 @@ For doing a quick sync of just the INBOX with `mbsync uliege-download`.

    Channel uliege-download
    -Master :uliege-remote:"Inbox"
    +Master :uliege-remote:"Inbox"
     Slave :uliege-local:Inbox
     Create Slave
     Expunge Slave
    @@ -708,34 +476,34 @@ tls_certcheck off
     
    -
    -

    Gmail Account

    -
    +
    +

    Gmail Account

    +
    account      gmail
     host         smtp.gmail.com
    -port         587
    +port         587
     protocol     smtp
     from         dehaeze.thomas@gmail.com
     user         dehaeze.thomas@gmail.com
    -passwordeval "pass email/dehaeze.thomas@gmail.com"
    +passwordeval "pass email/dehaeze.thomas@gmail.com"
     
    -
    -

    ESRF Account

    -
    +
    +

    ESRF Account

    +
    account        esrf
     host           smtps.esrf.fr
    -port           465
    +port           465
     protocol       smtp
     from           thomas.dehaeze@esrf.fr
     user           dehaeze
     tls_starttls   off
    -passwordeval   "pass email/thomas.dehaeze@esrf.fr"
    +passwordeval   "pass email/thomas.dehaeze@esrf.fr"
     
    @@ -747,12 +515,12 @@ passwordeval "pass email/thomas.dehaeze@esrf.fr"
    account        ulg
     host           smtp.ulg.ac.be
    -port           587
    +port           587
     protocol       smtp
     from           thomas.dehaeze@doct.uliege.be
     user           s177313
     tls_starttls   on
    -passwordeval   "pass email/thomas.dehaeze@doct.uliege.be"
    +passwordeval   "pass email/thomas.dehaeze@doct.uliege.be"
     
    @@ -764,12 +532,12 @@ passwordeval "pass email/thomas.dehaeze@doct.uliege.b
    account        uliege
     host           smtp.ulg.ac.be
    -port           587
    +port           587
     protocol       smtp
     from           tdehaeze@uliege.be
     user           u231244
     tls_starttls   on
    -passwordeval   "pass email/tdehaeze@uliege.be"
    +passwordeval   "pass email/tdehaeze@uliege.be"
     
    @@ -798,7 +566,7 @@ Useful commands are described in the -
    mu find 'mime:application/pdf'
    +
    mu find 'mime:application/pdf'
     
    @@ -899,16 +667,16 @@ bind generic,pager,editor,index <Return> noop bind generic,pager,editor,index | noop -bind generic,pager,editor,index 1 noop -bind generic,pager,editor,index 2 noop -bind generic,pager,editor,index 3 noop -bind generic,pager,editor,index 4 noop -bind generic,pager,editor,index 5 noop -bind generic,pager,editor,index 6 noop -bind generic,pager,editor,index 7 noop -bind generic,pager,editor,index 8 noop -bind generic,pager,editor,index 9 noop -bind generic,pager,editor,index 0 noop +bind generic,pager,editor,index 1 noop +bind generic,pager,editor,index 2 noop +bind generic,pager,editor,index 3 noop +bind generic,pager,editor,index 4 noop +bind generic,pager,editor,index 5 noop +bind generic,pager,editor,index 6 noop +bind generic,pager,editor,index 7 noop +bind generic,pager,editor,index 8 noop +bind generic,pager,editor,index 9 noop +bind generic,pager,editor,index 0 noop bind generic,pager,editor,index ! noop bind generic,pager,editor,index @ noop bind generic,pager,editor,index $ noop @@ -1103,15 +871,15 @@ bind generic,pager,editor,index <Esc>) noop
    bind index,pager,compose Q exit
    -macro index q "<shell-escape>if [ $TMUX ]; then tmux detach; fi<enter>"
    +macro index q "<shell-escape>if [ $TMUX ]; then tmux detach; fi<enter>"
     
    -
    -

    Generic

    -
    +
    +

    Generic

    +
    bind generic Q exit
     
    @@ -1121,11 +889,11 @@ bind generic l select-entry
     bind generic,index k previous-entry
     bind generic,index j next-entry
     
    -bind generic,index 0 first-entry
    +bind generic,index 0 first-entry
     bind generic,index $ last-entry
     
    -bind generic,index \031 previous-entry # Mouse wheel
    -bind generic,index \005 next-entry # Mouse wheel
    +bind generic,index \031 previous-entry # Mouse wheel
    +bind generic,index \005 next-entry # Mouse wheel
     
     bind generic,index gg first-entry
     bind generic,index G last-entry
    @@ -1157,34 +925,34 @@ bind index <Return> display-message
     bind pager l view-attachments
     
     bind pager gg top
    -bind pager 0 top
    +bind pager 0 top
     
     bind pager G bottom
     bind pager $ bottom
     
    -macro index h "<change-folder>?" "Go back to the list of mailboxes"
    +macro index h "<change-folder>?" "Go back to the list of mailboxes"
     bind pager h exit
     bind pager q exit
     
    -macro index c "<change-folder>?<toggle-mailboxes>" "change folder"
    +macro index c "<change-folder>?<toggle-mailboxes>" "change folder"
     
     bind index,pager u undelete-message
     
     bind index,pager P print-message
     
    -# Compose a new email (not a reply) to the sender
    +# Compose a new email (not a reply) to the sender
     bind index,pager @ compose-to-sender
     
    -# Marl All message as read
    +# Marl All message as read
     macro index \Cr \
    -    "<tag-pattern>~N<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" \
    -    "mark all new as read"
    +    "<tag-pattern>~N<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" \
    +    "mark all new as read"
     
    bind index za collapse-thread
    -bind index zA collapse-all # Missing :folddisable/foldenable
    +bind index zA collapse-all # Missing :folddisable/foldenable
     
    @@ -1195,6 +963,7 @@ Write/Reply/Forward mail
    bind index,pager p recall-message
     bind index,pager m mail
    +bind index,pager M resend-message
     bind index,pager r reply
     bind index,pager R group-reply
     bind index,pager b bounce-message
    @@ -1214,8 +983,8 @@ Sync Mailbox
     Sync email
     

    -
    macro index,pager o "<shell-escape>$HOME/.config/neomutt/bin/get_new_mail.sh<enter>"
    -macro index,pager O "<shell-escape>$HOME/.config/neomutt/bin/get_new_mail.sh -a<enter>"
    +
    macro index,pager o "<shell-escape>$HOME/.config/neomutt/bin/get_new_mail.sh<enter>"
    +macro index,pager O "<shell-escape>$HOME/.config/neomutt/bin/get_new_mail.sh -a<enter>"
     
    @@ -1223,7 +992,7 @@ macro index,pager O "<shell-escape>$HOME/.config/ Make quick html view macro

    -
    macro index,pager H "<view-attachments><search>html<enter><view-mailcap><exit>"
    +
    macro index,pager H "<view-attachments><search>html<enter><view-mailcap><exit>"
     
    @@ -1231,12 +1000,12 @@ Make quick html view macro Open mail with Vim

    -
    macro index,pager V "<view-attachments><search>plain<enter><view-mailcap><exit>"
    +
    macro index,pager V "<view-attachments><search>plain<enter><view-mailcap><exit>"
     
    -
    # bind index,pager U toggle-new
    +
    # bind index,pager U toggle-new
     
    @@ -1275,9 +1044,9 @@ bind index,pager N search-opposite
    -
    -

    Attachments

    -
    +
    +

    Attachments

    +
    bind attach l view-attach
     
    @@ -1286,7 +1055,7 @@ bind attach q exit
     
     bind attach <return> view-mailcap
     
    -macro attach W <save-entry><kill-line>~/Downloads/<enter>y "Save entry"
    +macro attach W <save-entry><kill-line>~/Downloads/<enter>y "Save entry"
     
    @@ -1308,7 +1077,7 @@ bind compose a attach-file Open another instance of neomutt in readonly mode while composing

    -
    macro compose M "<shell-escape>$TERMINAL -e \"neomutt -R\"<enter>"
    +
    macro compose M "<shell-escape>$TERMINAL -e \"neomutt -R\"<enter>"
     
    @@ -1316,7 +1085,7 @@ Open another instance of neomutt in readonly mode while composing Attach multiple files using ranger

    -
    macro compose A "<shell-escape>bash $HOME/.config/neomutt/bin/rangerpick<enter><enter-command>source /tmp/rangerpick<enter><shell-escape>bash $HOME/.config/neomutt/bin/rangerpick clean<enter>" "Attach with Ranger"
    +
    macro compose A "<shell-escape>bash $HOME/.config/neomutt/bin/rangerpick<enter><enter-command>source /tmp/rangerpick<enter><shell-escape>bash $HOME/.config/neomutt/bin/rangerpick clean<enter>" "Attach with Ranger"
     
    @@ -1325,12 +1094,12 @@ Attach multiple files using ranger
    Attach with Ranger Script
    -
    tmpfile=/tmp/rangerpick
    -if [ -z "$1" ]; then
    -   ranger --choosefiles $tmpfile && sed -i 's/\s/\\ /g' $tmpfile && echo "$(awk 'BEGIN {printf "%s", "push "} {printf "%s", "<attach-file>"$0"<enter>"}'  $tmpfile)" > $tmpfile
    -elif [ $1 == "clean" ]; then
    -  ls $tmpfile
    -fi
    +
    tmpfile=/tmp/rangerpick
    +if [ -z "$1" ]; then
    +   ranger --choosefiles $tmpfile && sed -i 's/\s/\\ /g' $tmpfile && echo "$(awk 'BEGIN {printf "%s", "push "} {printf "%s", "<attach-file>"$0"<enter>"}'  $tmpfile)" > $tmpfile
    +elif [ $1 == "clean" ]; then
    +  ls $tmpfile
    +fi
     
    @@ -1343,7 +1112,7 @@ Attach multiple files using ranger Write html emails using markdown

    -
    # macro compose M "F pandoc -s -f markdown -t html \ny^T^Utext/html; charset=us-ascii\n"
    +
    # macro compose M "F pandoc -s -f markdown -t html \ny^T^Utext/html; charset=us-ascii\n"
     
    @@ -1355,7 +1124,7 @@ Write html emails using markdown
    bind browser l select-entry
    -macro browser h "<top-page><select-entry>"
    +macro browser h "<top-page><select-entry>"
     
     bind browser t tag-entry
     
    @@ -1365,9 +1134,9 @@ bind browser q exit
     
    -
    -

    Generic

    -
    +
    +

    Generic

    +

    Enter Command

    @@ -1382,16 +1151,16 @@ Enter Command

    Copy and move mails

    -
    macro index C "<copy-message>?<toggle-mailboxes>" "copy a message to a mailbox"
    -macro index M "<save-message>?<toggle-mailboxes>" "move a message to a mailbox"
    +
    macro index C "<copy-message>?<toggle-mailboxes>" "copy a message to a mailbox"
    +macro index M "<save-message>?<toggle-mailboxes>" "move a message to a mailbox"
     
    -
    -

    Sidebar

    -
    +
    +

    Sidebar

    +
    bind index,pager \Cp sidebar-prev
     bind index,pager \Cn sidebar-next
    @@ -1407,7 +1176,7 @@ bind index,pager \Ch sidebar-toggle-visible
     

    Reload Configuration

    -
    macro generic,index,pager,editor ,<Space> ":source ~/.config/neomutt/neomuttrc\n" "Reload mutt's configuration file"
    +
    macro generic,index,pager,editor ,<Space> ":source ~/.config/neomutt/neomuttrc\n" "Reload mutt's configuration file"
     
    @@ -1420,13 +1189,13 @@ bind index,pager \Ch sidebar-toggle-visible Use urlview to extract urls from the mail.

    -
    macro attach,compose,index,pager \cw "\
    -  :set my_tmp_pipe_decode=\$pipe_decode\n\
    -  :set pipe_decode\n\
    -  <pipe-message>urlview\n\
    -  :set pipe_decode=\$my_tmp_pipe_decode\n\
    -  :unset my_tmp_pipe_decode\n" \
    -  'call urlview to extract URLs out of a message'
    +
    macro attach,compose,index,pager \cw "\
    +  :set my_tmp_pipe_decode=\$pipe_decode\n\
    +  :set pipe_decode\n\
    +  <pipe-message>urlview\n\
    +  :set pipe_decode=\$my_tmp_pipe_decode\n\
    +  :unset my_tmp_pipe_decode\n" \
    +  'call urlview to extract URLs out of a message'
     
    @@ -1436,10 +1205,10 @@ Use urlview to extract urls from the mail.

    Searching using Mu

    -
    macro index,pager \Cf "<shell-escape>mu find --clearlinks --format=links --linksdir=~/.mail/search " \
    -                         "mu find"
    -macro index,pager gf "<change-folder-readonly>~/.mail/search<enter>" \
    -                         "mu find results"
    +
    macro index,pager \Cf "<shell-escape>mu find --clearlinks --format=links --linksdir=~/.mail/search " \
    +                         "mu find"
    +macro index,pager gf "<change-folder-readonly>~/.mail/search<enter>" \
    +                         "mu find results"
     
    @@ -1454,7 +1223,7 @@ macro index,pager gf "<change-folder-readonly>~/.

    -
    macro index,pager S "<pipe-message>$HOME/scripts/mutt-save-org-link.py\n"
    +
    macro index,pager S "<pipe-message>$HOME/.config/neomutt/bin/mutt-save-org-link.py\n"
     
    @@ -1463,24 +1232,24 @@ macro index,pager gf "<change-folder-readonly>~/.
    Link mail to orgmode - Script
    -
    import sys
    -import email
    -import subprocess
    -import urllib.parse
    +
    import sys
    +import email
    +import subprocess
    +import urllib.parse
     
    -# Parse the email from standard input
    -message_bytes = sys.stdin.buffer.read()
    -message = email.message_from_bytes(message_bytes)
    +# Parse the email from standard input
    +message_bytes = sys.stdin.buffer.read()
    +message = email.message_from_bytes(message_bytes)
     
    -# Grab the relevant message headers
    -message_id = urllib.parse.quote(message['message-id'].strip()[1:-1])
    -subject = message['subject'].replace('[', '{').replace(']', '}').replace('\n', ' ')
    -subject = (subject[:75] + '..') if len(subject) > 75 else subject
    +# Grab the relevant message headers
    +message_id = urllib.parse.quote(message['message-id'].strip()[1:-1])
    +subject = message['subject'].replace('[', '{').replace(']', '}').replace('\n', ' ')
    +subject = (subject[:75] + '..') if len(subject) > 75 else subject
     
    -# Ask emacsclient to save a link to the message
    -p = subprocess.Popen([
    -    'emacsclient',
    -    f'org-protocol://capture?template=pm&url={message_id}&title={subject}'
    +# Ask emacsclient to save a link to the message
    +p = subprocess.Popen([
    +    'emacsclient',
    +    f'org-protocol://capture?template=pm&url={message_id}&title={subject}'
     ])
     
     p.wait()
    @@ -1511,7 +1280,7 @@ color indicator   color000       color021
     color tree        color021       color000
     color progress    color000       color021
     
    -# basic monocolor screen
    +# basic monocolor screen
     mono  bold      bold
     mono  underline underline
     mono  indicator reverse
    @@ -1525,43 +1294,43 @@ mono  error     bold
     

    Index

    -
    color index color021       color000 "~A"      # All messages
    -color index brightcolor006 color000 "~N"      # New messages
    -color index color020       color000 "~O"      # Old messages
    -color index color020       color000 "~Q"      # messages that have been replied to
    -color index color021       color000 "~R"      # read messages
    -color index color006       color000 "~U"      # unread messages
    -color index color021       color000 "~R~p!~F" # messages to me
    -color index brightcolor006 color000 "~N~p!~F" # new messages to me
    -color index brightcolor006 color000 "~U~p!~F" # unread messages to me
    -color index color005       color000 "~F"      # flagged messages
    -color index color005       color000 "~F~p"    # flagged messages to me
    -color index brightcolor006 color000 "~N~F"    # new flagged messages
    -color index brightcolor006 color000 "~N~F~p"  # new flagged messages to me
    -color index brightcolor006 color000 "~U~F~p"  # new flagged messages to me
    -color index brightcolor000 color001 "~D"      # deleted messages
    +
    color index color021       color000 "~A"      # All messages
    +color index brightcolor006 color000 "~N"      # New messages
    +color index color020       color000 "~O"      # Old messages
    +color index color020       color000 "~Q"      # messages that have been replied to
    +color index color021       color000 "~R"      # read messages
    +color index color006       color000 "~U"      # unread messages
    +color index color021       color000 "~R~p!~F" # messages to me
    +color index brightcolor006 color000 "~N~p!~F" # new messages to me
    +color index brightcolor006 color000 "~U~p!~F" # unread messages to me
    +color index color005       color000 "~F"      # flagged messages
    +color index color005       color000 "~F~p"    # flagged messages to me
    +color index brightcolor006 color000 "~N~F"    # new flagged messages
    +color index brightcolor006 color000 "~N~F~p"  # new flagged messages to me
    +color index brightcolor006 color000 "~U~F~p"  # new flagged messages to me
    +color index brightcolor000 color001 "~D"      # deleted messages
     
    -color index brightcolor021 color019 "~v~(!~N)"    # collapsed thread with no unread
    -color index brightcolor006 color019 "~v~(~N)"     # collapsed thread with some unread
    -color index brightcolor006 color019 "~N~v~(~N)"   # collapsed thread with unread parent
    -color index brightcolor005 color019 "~v~(~F)!~N"  # collapsed thread with flagged, no unread
    -color index brightcolor006 color019 "~v~(~F~N)"   # collapsed thread with some unread & flagged
    -color index brightcolor006 color019 "~N~v~(~F~N)" # collapsed thread with unread parent & flagged
    -color index brightcolor005 color019 "~N~v~(~F)"   # collapsed thread with unread parent, no unread inside, but some flagged
    -color index brightcolor000 color001 "~v~(~D)"     # thread with deleted (doesn't differentiate between all or partial)
    +color index brightcolor021 color019 "~v~(!~N)"    # collapsed thread with no unread
    +color index brightcolor006 color019 "~v~(~N)"     # collapsed thread with some unread
    +color index brightcolor006 color019 "~N~v~(~N)"   # collapsed thread with unread parent
    +color index brightcolor005 color019 "~v~(~F)!~N"  # collapsed thread with flagged, no unread
    +color index brightcolor006 color019 "~v~(~F~N)"   # collapsed thread with some unread & flagged
    +color index brightcolor006 color019 "~N~v~(~F~N)" # collapsed thread with unread parent & flagged
    +color index brightcolor005 color019 "~N~v~(~F)"   # collapsed thread with unread parent, no unread inside, but some flagged
    +color index brightcolor000 color001 "~v~(~D)"     # thread with deleted (doesn't differentiate between all or partial)
     
    -
    -

    Sidebar

    -
    +
    +

    Sidebar

    +
    -
    color sidebar_indicator color000       color021  # Mailbox is open
    -color sidebar_highlight color000       color003  # Mailbox is highlighted
    -color sidebar_new       brightcolor006 color000  # Mailbox contains new mail
    -color sidebar_ordinary  color021       color000  # Mailbox contains new mail
    +
    color sidebar_indicator color000       color021  # Mailbox is open
    +color sidebar_highlight color000       color003  # Mailbox is highlighted
    +color sidebar_new       brightcolor006 color000  # Mailbox contains new mail
    +color sidebar_ordinary  color021       color000  # Mailbox contains new mail
     
    @@ -1572,36 +1341,36 @@ color sidebar_ordinary color021 color000
    color hdrdefault color006       color000
    -color header     brightcolor006 color000 "^(From)"
    -color header     brightcolor004 color000 "^(Subject)"
    +color header     brightcolor006 color000 "^(From)"
    +color header     brightcolor004 color000 "^(Subject)"
     
    -
    -

    Attachments

    -
    +
    +

    Attachments

    +
    -
    # Color if the attachment is autoviewed
    -color   attach_headers     brightgreen     default    "Autoview"
    -# Color only the brackets around the headers
    -color   attach_headers     brightyellow    default    "^\\[--"
    -color   attach_headers     brightyellow    default    "--]$"
    -# Color the mime type and the size
    -color   attach_headers     green           default    "Type: [a-z]+/[a-z0-9\-]+"
    -color   attach_headers     green           default    "Size: [0-9\.]+[KM]"
    -# Color GPGME signature checks
    -color   attach_headers     brightgreen     default    "Good signature from.*"
    -color   attach_headers     brightred       default    "Bad signature from.*"
    -color   attach_headers     brightred       default    "BAD signature from.*"
    -color   attach_headers     brightred       default    "Note: This key has expired!"
    -color   attach_headers     brightmagenta   default    "Problem signature from.*"
    -color   attach_headers     brightmagenta   default    "WARNING: This key is not certified with a trusted signature!"
    -color   attach_headers     brightmagenta   default    "         There is no indication that the signature belongs to the owner."
    -color   attach_headers     brightmagenta   default    "can't handle these multiple signatures"
    -color   attach_headers     brightmagenta   default    "signature verification suppressed"
    -color   attach_headers     brightmagenta   default    "invalid node with packet of type"
    +
    # Color if the attachment is autoviewed
    +color   attach_headers     brightgreen     default    "Autoview"
    +# Color only the brackets around the headers
    +color   attach_headers     brightyellow    default    "^\\[--"
    +color   attach_headers     brightyellow    default    "--]$"
    +# Color the mime type and the size
    +color   attach_headers     green           default    "Type: [a-z]+/[a-z0-9\-]+"
    +color   attach_headers     green           default    "Size: [0-9\.]+[KM]"
    +# Color GPGME signature checks
    +color   attach_headers     brightgreen     default    "Good signature from.*"
    +color   attach_headers     brightred       default    "Bad signature from.*"
    +color   attach_headers     brightred       default    "BAD signature from.*"
    +color   attach_headers     brightred       default    "Note: This key has expired!"
    +color   attach_headers     brightmagenta   default    "Problem signature from.*"
    +color   attach_headers     brightmagenta   default    "WARNING: This key is not certified with a trusted signature!"
    +color   attach_headers     brightmagenta   default    "         There is no indication that the signature belongs to the owner."
    +color   attach_headers     brightmagenta   default    "can't handle these multiple signatures"
    +color   attach_headers     brightmagenta   default    "signature verification suppressed"
    +color   attach_headers     brightmagenta   default    "invalid node with packet of type"
     
    @@ -1629,11 +1398,11 @@ color normal color021 color000

    PGP

    -
    color body  color001 color000         "(BAD signature)"
    -color body  color002 color000         "(Good signature)"
    -color body  color002 color000         "^gpg: Good signature .*"
    -color body  color002 color000         "^gpg: "
    -color body  color002 color000         "^gpg: BAD signature from.*"
    +
    color body  color001 color000         "(BAD signature)"
    +color body  color002 color000         "(Good signature)"
    +color body  color002 color000         "^gpg: Good signature .*"
    +color body  color002 color000         "^gpg: "
    +color body  color002 color000         "^gpg: BAD signature from.*"
     
    @@ -1643,7 +1412,7 @@ color body color002 color000 "^gpg: BAD signat

    Urls

    -
    color body color006 color000         "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
    +
    color body color006 color000         "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
     
    @@ -1653,7 +1422,7 @@ color body color002 color000 "^gpg: BAD signat

    Emails

    -
    color body color006 color000 "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
    +
    color body color006 color000 "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
     
    @@ -1664,7 +1433,7 @@ color body color002 color000 "^gpg: BAD signat

    Contacts with Mu

    -
    set query_command="mu cfind '%s' -o mutt-ab"
    +
    set query_command="mu cfind '%s' -o mutt-ab"
     
     bind editor <Tab> complete-query
     
    @@ -1676,13 +1445,13 @@ bind editor <Tab> complete-query

    Paths

    -
    set folder           = ~/.mail                         # mail location
    -set alias_file       = ~/.config/neomutt/alias         # where to store aliases
    -set header_cache     = ~/.config/neomutt/cache/headers # where to store headers
    -set message_cachedir = ~/.config/neomutt/cache/bodies  # where to store bodies
    -set certificate_file = ~/.config/neomutt/certificates  # where to store certs
    -set mailcap_path     = ~/.config/neomutt/mailcap       # entries for filetypes
    -set tmpdir           = ~/.config/neomutt/temp          # where to keep temp files
    +
    set folder           = ~/.mail                         # mail location
    +set alias_file       = ~/.config/neomutt/alias         # where to store aliases
    +set header_cache     = ~/.config/neomutt/cache/headers # where to store headers
    +set message_cachedir = ~/.config/neomutt/cache/bodies  # where to store bodies
    +set certificate_file = ~/.config/neomutt/certificates  # where to store certs
    +set mailcap_path     = ~/.config/neomutt/mailcap       # entries for filetypes
    +set tmpdir           = ~/.config/neomutt/temp          # where to keep temp files
     
    @@ -1696,7 +1465,7 @@ bind editor <Tab> complete-query

    -
    # set print_command="/usr/bin/muttprint %s -p ctb110c1u"
    +
    # set print_command="/usr/bin/muttprint %s -p ctb110c1u"
     
    @@ -1706,19 +1475,19 @@ bind editor <Tab> complete-query

    Accounts

    -
    set spoolfile = "+gmail/Inbox" # Default inbox
    -set realname = "Dehaeze Thomas"
    -set from = "dehaeze.thomas@gmail.com"
    +
    set spoolfile = "+gmail/Inbox" # Default inbox
    +set realname = "Dehaeze Thomas"
    +set from = "dehaeze.thomas@gmail.com"
     
     folder-hook gmail/* source ~/.config/neomutt/accounts/gmail
     folder-hook esrf/*  source ~/.config/neomutt/accounts/esrf
     folder-hook ulg/*   source ~/.config/neomutt/accounts/ulg
     folder-hook uliege/*   source ~/.config/neomutt/accounts/uliege
     
    -macro index,pager gl "<change-folder>+uliege/Inbox<enter>" "go to inbox"
    -macro index,pager gu "<change-folder>+ulg/Inbox<enter>" "go to inbox"
    -macro index,pager ge "<change-folder>+esrf/Inbox<enter>" "go to inbox"
    -macro index,pager gm "<change-folder>+gmail/Inbox<enter>" "go to inbox"
    +macro index,pager gl "<change-folder>+uliege/Inbox<enter>" "go to inbox"
    +macro index,pager gu "<change-folder>+ulg/Inbox<enter>" "go to inbox"
    +macro index,pager ge "<change-folder>+esrf/Inbox<enter>" "go to inbox"
    +macro index,pager gm "<change-folder>+gmail/Inbox<enter>" "go to inbox"
     
    @@ -1727,171 +1496,27 @@ macro index,pager gm "<change-folder>+gmail/Inbox

    Gmail

    -
    -
    Configuration
    -
    -
    -
    set from     = "dehaeze.thomas@gmail.com"
    -set sendmail = "msmtp -a gmail"
    -
    -# Other special folders.
    -set mbox      = "+gmail/Archive"
    -unset record # Don't copy send message to Sent folder: Gmail does that for us
    -set postponed = "+gmail/Drafts"
    -
    -set signature = "~/.config/neomutt/accounts/gmail.signature"
    -
    -macro index,pager d \
    -  "<save-message>+gmail/Archive<enter>" \
    -  "Move message to the Archive"
    -
    -macro index,pager D \
    -  "<save-message>+gmail/Trash<enter>" \
    -  "Move message to the Trash"
    -
    -
    -
    -
    - -
    -
    Signature
    -
    -
    -
    Thomas Dehaeze
    -
    -
    -

    -This empty code block is used to add a new line after signature -

    -
    -
    -
    -
    -
    -
    -
    - -
    -

    ESRF

    -
    -
    -
    -
    Configuration
    -
    -
    -
    set from     = "thomas.dehaeze@esrf.fr"
    -set sendmail = "msmtp -a esrf"
    -
    -# Other special folders.
    -set mbox      = "+esrf/Archive"
    -set record    = "+esrf/Sent"
    -set postponed = "+esrf/Drafts"
    -
    -set signature = "~/.config/neomutt/accounts/esrf.signature"
    -
    -macro index,pager d \
    -  "<save-message>+esrf/Archive<enter>" \
    -  "Move message to the Archive"
    -
    -macro index,pager D \
    -  "<save-message>+esrf/Trash<enter>" \
    -  "Move message to the Trash"
    -
    -
    -
    -
    - -
    -
    Signature
    -
    -
    -
    Thomas Dehaeze
    -
    -
    -

    -This empty code block is used to add a new line after signature -

    -
    -
    -
    -
    -
    -
    -
    - -
    -

    ULG

    -
    -
    -
    -
    Configuration
    -
    -
    -
    set from     = "thomas.dehaeze@doct.uliege.be"
    -set sendmail = "msmtp -a ulg"
    -
    -# Other special folders.
    -set mbox      = "+ulg/Archive"
    -set record    = "+ulg/Sent"
    -set postponed = "+ulg/Drafts"
    -
    -set signature = "~/.config/neomutt/accounts/ulg.signature"
    -
    -macro index,pager d \
    -  "<save-message>+ulg/Archive<enter>" \
    -  "Move message to the Archive"
    -
    -macro index,pager D \
    -  "<save-message>+ulg/Trash<enter>" \
    -  "Move message to the Trash"
    -
    -
    -
    -
    - -
    -
    Signature
    -
    -
    -
    Thomas Dehaeze
    -
    -
    -

    -This empty code block is used to add a new line after signature -

    -
    -
    -
    -
    -
    -
    -
    - -
    -

    ULIEGE

    -
    -
    Configuration
    -
    set from     = "tdehaeze@uliege.be"
    -set sendmail = "msmtp -a uliege"
    +
    set from     = "dehaeze.thomas@gmail.com"
    +set sendmail = "msmtp -a gmail"
     
    -# Other special folders.
    -set mbox      = "+uliege/Archive"
    -set record    = "+uliege/Sent"
    -set postponed = "+uliege/Drafts"
    +# Other special folders.
    +set mbox      = "+gmail/Archive"
    +unset record # Don't copy send message to Sent folder: Gmail does that for us
    +set postponed = "+gmail/Drafts"
     
    -set signature = "~/.config/neomutt/accounts/uliege.signature"
    +set signature = "~/.config/neomutt/accounts/gmail.signature"
     
     macro index,pager d \
    -  "<save-message>+uliege/Archive<enter>" \
    -  "Move message to the Archive"
    +  "<save-message>+gmail/Archive<enter>" \
    +  "Move message to the Archive"
     
     macro index,pager D \
    -  "<save-message>+uliege/Trash<enter>" \
    -  "Move message to the Trash"
    +  "<save-message>+gmail/Trash<enter>" \
    +  "Move message to the Trash"
     
    @@ -1914,31 +1539,175 @@ This empty code block is used to add a new line after signature
    + +
    +

    ESRF

    +
    +
    +
    +
    Configuration
    +
    +
    +
    set from     = "thomas.dehaeze@esrf.fr"
    +set sendmail = "msmtp -a esrf"
    +
    +# Other special folders.
    +set mbox      = "+esrf/Archive"
    +set record    = "+esrf/Sent"
    +set postponed = "+esrf/Drafts"
    +
    +set signature = "~/.config/neomutt/accounts/esrf.signature"
    +
    +macro index,pager d \
    +  "<save-message>+esrf/Archive<enter>" \
    +  "Move message to the Archive"
    +
    +macro index,pager D \
    +  "<save-message>+esrf/Trash<enter>" \
    +  "Move message to the Trash"
    +
    +
    +
    +
    + +
    +
    Signature
    +
    +
    +
    Thomas Dehaeze
    +
    +
    +

    +This empty code block is used to add a new line after signature +

    +
    +
    +
    +
    +
    +
    +
    + +
    +

    ULG

    +
    +
    +
    +
    Configuration
    +
    +
    +
    set from     = "thomas.dehaeze@doct.uliege.be"
    +set sendmail = "msmtp -a ulg"
    +
    +# Other special folders.
    +set mbox      = "+ulg/Archive"
    +set record    = "+ulg/Sent"
    +set postponed = "+ulg/Drafts"
    +
    +set signature = "~/.config/neomutt/accounts/ulg.signature"
    +
    +macro index,pager d \
    +  "<save-message>+ulg/Archive<enter>" \
    +  "Move message to the Archive"
    +
    +macro index,pager D \
    +  "<save-message>+ulg/Trash<enter>" \
    +  "Move message to the Trash"
    +
    +
    +
    +
    + +
    +
    Signature
    +
    +
    +
    Thomas Dehaeze
    +
    +
    +

    +This empty code block is used to add a new line after signature +

    +
    +
    +
    +
    +
    +
    +
    + +
    +

    ULIEGE

    +
    +
    +
    +
    Configuration
    +
    +
    +
    set from     = "tdehaeze@uliege.be"
    +set sendmail = "msmtp -a uliege"
    +
    +# Other special folders.
    +set mbox      = "+uliege/Archive"
    +set record    = "+uliege/Sent"
    +set postponed = "+uliege/Drafts"
    +
    +set signature = "~/.config/neomutt/accounts/uliege.signature"
    +
    +macro index,pager d \
    +  "<save-message>+uliege/Archive<enter>" \
    +  "Move message to the Archive"
    +
    +macro index,pager D \
    +  "<save-message>+uliege/Trash<enter>" \
    +  "Move message to the Trash"
    +
    +
    +
    +
    + +
    +
    Signature
    +
    +
    +
    Thomas Dehaeze
    +
    +
    +

    +This empty code block is used to add a new line after signature +

    +
    +
    +
    +
    +
    +
    +

    Basic Options

    -
    set wait_key = no        # shut up, mutt
    -set mbox_type = Maildir  # mailbox type
    -set help = no            # No top bar
    -set timeout = 3          # idle time before scanning
    -set sleep_time = 0       # how long NeoMutt may wait after an error message
    -set mail_check = 0       # minimum time between scans
    -set delete               # don't ask, just do
    -unset confirmappend      # don't ask, just do!
    -set quit                 # don't ask, just do!!
    -set mark_old = no        # read/new is good enough for me
    -set beep_new             # bell on new mails
    -# set pipe_decode          # strip headers and eval mimes when piping
    -set thorough_search      # strip headers and eval mimes before searching
    -set send_charset="us-ascii:utf-8:iso-8859-1"
    -set sendmail_wait = 0 # no please don't silently fail, email is important
    -set use_from             # respect the From: address the editor sends back
    +
    set wait_key = no        # shut up, mutt
    +set mbox_type = Maildir  # mailbox type
    +set help = no            # No top bar
    +set timeout = 3          # idle time before scanning
    +set sleep_time = 0       # how long NeoMutt may wait after an error message
    +set mail_check = 0       # minimum time between scans
    +set delete               # don't ask, just do
    +unset confirmappend      # don't ask, just do!
    +set quit                 # don't ask, just do!!
    +set mark_old = no        # read/new is good enough for me
    +set beep_new             # bell on new mails
    +# set pipe_decode          # strip headers and eval mimes when piping
    +set thorough_search      # strip headers and eval mimes before searching
    +set send_charset="us-ascii:utf-8:iso-8859-1"
    +set sendmail_wait = 0 # no please don't silently fail, email is important
    +set use_from             # respect the From: address the editor sends back
     
    -# Use Vim to compose email, with a few default options.
    -set editor = "nvim -c '/\\n--' -c ':noh' -c 'startinsert' -c ':Goyo'"
    +# Use Vim to compose email, with a few default options.
    +set editor = "nvim -c '/\\n--' -c ':noh' -c 'startinsert' -c ':Goyo'"
     
    @@ -1952,9 +1721,9 @@ set use_from # Status Bar
    -
    set status_on_top = no
    -set status_chars  = " *%A"
    -set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───"
    +
    set status_on_top = no
    +set status_chars  = " *%A"
    +set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───"
     
    @@ -1964,15 +1733,15 @@ set use_from # Index View Options
    -
    set date_format = "%d/%m/%y %H:%M"
    -set index_format = "[%Z] %D %-20.20F %s"
    +
    set date_format = "%d/%m/%y %H:%M"
    +set index_format = "[%Z] %D %-20.20F %s"
     
    -set sort = threads                         # like gmail
    -set sort_aux = reverse-last-date-received  # like gmail
    -set uncollapse_jump                        # don't collapse on an unread message
    -set sort_re                                # thread based on regex
    -set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
    -set folder_format = "%2C %t %N %8s %f"
    +set sort = threads                         # like gmail
    +set sort_aux = reverse-last-date-received  # like gmail
    +set uncollapse_jump                        # don't collapse on an unread message
    +set sort_re                                # thread based on regex
    +set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
    +set folder_format = "%2C %t %N %8s %f"
     
    @@ -1982,16 +1751,16 @@ set sort_re #

    Pager View Options

    -
    set pager_index_lines = 10 # number of index lines to show
    -set pager_context = 3      # number of context lines to show
    -set pager_stop             # don't go to next message automatically
    -set menu_scroll            # scroll in menus
    -set tilde                  # show tildes like in vim
    -set markers = no           # no ugly plus signs
    -set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
    +
    set pager_index_lines = 10 # number of index lines to show
    +set pager_context = 3      # number of context lines to show
    +set pager_stop             # don't go to next message automatically
    +set menu_scroll            # scroll in menus
    +set tilde                  # show tildes like in vim
    +set markers = no           # no ugly plus signs
    +set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
     
    -auto_view text/html                                      # view html automatically
    -alternative_order text/plain text/enriched text/html     # save html for last
    +auto_view text/html                                      # view html automatically
    +alternative_order text/plain text/enriched text/html     # save html for last
     
    @@ -2001,21 +1770,21 @@ alternative_order text/plain text/enriched text/html Compose View Options
    -
    set envelope_from                    # which from?
    -set sig_dashes                       # dashes before sig
    -set sig_on_top                       # the signature is just below the response
    -set edit_headers                     # show headers when composing
    -set fast_reply                       # skip to compose when replying
    -set askcc                            # ask for CC:
    -set fcc_attach                       # save attachments with the body
    -set mime_forward = yes               # forward attachments as part of body
    -set forward_format = "Fwd: %s"       # format of subject when forwarding
    -set forward_decode                   # decode when forwarding
    -set attribution = "On %d, %n wrote:" # format of quoting header
    -set reply_to                         # reply to Reply to: field
    -set reverse_name                     # reply as whomever it was to
    -set include                          # include message in replies
    -set forward_quote                    # include message in forwards
    +
    set envelope_from                    # which from?
    +set sig_dashes                       # dashes before sig
    +set sig_on_top                       # the signature is just below the response
    +set edit_headers                     # show headers when composing
    +set fast_reply                       # skip to compose when replying
    +set askcc                            # ask for CC:
    +set fcc_attach                       # save attachments with the body
    +set mime_forward = yes               # forward attachments as part of body
    +set forward_format = "Fwd: %s"       # format of subject when forwarding
    +set forward_decode                   # decode when forwarding
    +set attribution = "On %d, %n wrote:" # format of quoting header
    +set reply_to                         # reply to Reply to: field
    +set reverse_name                     # reply as whomever it was to
    +set include                          # include message in replies
    +set forward_quote                    # include message in forwards
     
    @@ -2025,81 +1794,81 @@ set forward_quote # Headers
    -
    ignore *                                # ignore all headers
    -unignore from: to: cc: date: subject:   # show only these
    +
    ignore *                                # ignore all headers
    +unignore from: to: cc: date: subject:   # show only these
     unhdr_order *
    -hdr_order from: to: cc: date: subject:  # and in this order
    +hdr_order from: to: cc: date: subject:  # and in this order
     
    -
    -

    Sidebar

    -
    +
    +

    Sidebar

    +

    General Config

    -
    # Should the Sidebar be shown?
    -set sidebar_visible = yes
    +
    # Should the Sidebar be shown?
    +set sidebar_visible = yes
     
    -# How wide should the Sidebar be in screen columns?
    -# Note: Some characters, e.g. Chinese, take up two columns each.
    -set sidebar_width = 20
    +# How wide should the Sidebar be in screen columns?
    +# Note: Some characters, e.g. Chinese, take up two columns each.
    +set sidebar_width = 20
     
    -# Should the mailbox paths be abbreviated?
    -set sidebar_short_path = yes
    +# Should the mailbox paths be abbreviated?
    +set sidebar_short_path = yes
     
    -# When abbreviating mailbox path names, use any of these characters as path
    -# separators.  Only the part after the last separators will be shown.
    -# For file folders '/' is good.  For IMAP folders, often '.' is useful.
    -set sidebar_delim_chars = '/.'
    +# When abbreviating mailbox path names, use any of these characters as path
    +# separators.  Only the part after the last separators will be shown.
    +# For file folders '/' is good.  For IMAP folders, often '.' is useful.
    +set sidebar_delim_chars = '/.'
     
    -# If the mailbox path is abbreviated, should it be indented?
    -set sidebar_folder_indent = yes
    +# If the mailbox path is abbreviated, should it be indented?
    +set sidebar_folder_indent = yes
     
    -# Indent mailbox paths with this string.
    -set sidebar_indent_string = '  '
    +# Indent mailbox paths with this string.
    +set sidebar_indent_string = '  '
     
    -# Make the Sidebar only display mailboxes that contain new, or flagged,
    -# mail.
    -set sidebar_new_mail_only = no
    +# Make the Sidebar only display mailboxes that contain new, or flagged,
    +# mail.
    +set sidebar_new_mail_only = no
     
    -# Any mailboxes that are whitelisted will always be visible, even if the
    -# sidebar_new_mail_only option is enabled.
    -# sidebar_whitelist '/home/user/mailbox1'
    -# sidebar_whitelist '/home/user/mailbox2'
    +# Any mailboxes that are whitelisted will always be visible, even if the
    +# sidebar_new_mail_only option is enabled.
    +# sidebar_whitelist '/home/user/mailbox1'
    +# sidebar_whitelist '/home/user/mailbox2'
     
    -# When searching for mailboxes containing new mail, should the search wrap
    -# around when it reaches the end of the list?
    -set sidebar_next_new_wrap = no
    +# When searching for mailboxes containing new mail, should the search wrap
    +# around when it reaches the end of the list?
    +set sidebar_next_new_wrap = no
     
    -# Show the Sidebar on the right-hand side of the screen
    -set sidebar_on_right = no
    +# Show the Sidebar on the right-hand side of the screen
    +set sidebar_on_right = no
     
    -# The character to use as the divider between the Sidebar and the other Mutt
    -# panels.
    -# Note: Only the first character of this string is used.
    -set sidebar_divider_char = '│'
    +# The character to use as the divider between the Sidebar and the other Mutt
    +# panels.
    +# Note: Only the first character of this string is used.
    +set sidebar_divider_char = '│'
     
    -# Enable extended buffy mode to calculate total, new, and flagged
    -# message counts for each mailbox.
    +# Enable extended buffy mode to calculate total, new, and flagged
    +# message counts for each mailbox.
     set mail_check_stats
     
    -# Display the Sidebar mailboxes using this format string.
    -# set sidebar_format = '%B %?N?(%N)?%* %S'
    -set sidebar_format = '%B %* %?N?[%N]?'
    +# Display the Sidebar mailboxes using this format string.
    +# set sidebar_format = '%B %?N?(%N)?%* %S'
    +set sidebar_format = '%B %* %?N?[%N]?'
     
    -# Sort the mailboxes in the Sidebar using this method:
    -#       count    - total number of messages
    -#       flagged  - number of flagged messages
    -#       new      - number of new messages
    -#       path     - mailbox path
    -#       unsorted - do not sort the mailboxes
    -set sidebar_sort_method = 'unsorted'
    +# Sort the mailboxes in the Sidebar using this method:
    +#       count    - total number of messages
    +#       flagged  - number of flagged messages
    +#       new      - number of new messages
    +#       path     - mailbox path
    +#       unsorted - do not sort the mailboxes
    +set sidebar_sort_method = 'unsorted'
     
    @@ -2109,31 +1878,31 @@ set mail_check_stats

    Mailboxes to show in the sidebar.

    -
    named-mailboxes "   Search" =search
    -named-mailboxes " GMAIL" =empty/gmail
    -named-mailboxes "   Inbox" =gmail/Inbox
    -named-mailboxes "   Sent" =gmail/Sent
    -named-mailboxes "   Drafts" =gmail/Drafts
    -named-mailboxes " ﮊ  Archive" =gmail/Archive
    -named-mailboxes "   Trash" =gmail/Trash
    -named-mailboxes " ESRF" =empty/esrf
    -named-mailboxes "   Inbox" =esrf/Inbox
    -named-mailboxes "   Sent" =esrf/Sent
    -named-mailboxes "   Drafts" =esrf/Drafts
    -named-mailboxes " ﮊ  Archive" =esrf/Archive
    -named-mailboxes "   Trash" =esrf/Trash
    -named-mailboxes " ULG" =empty/ulg
    -named-mailboxes "   Inbox" =ulg/Inbox
    -named-mailboxes "   Sent" =ulg/Sent
    -named-mailboxes "   Drafts" =ulg/Drafts
    -named-mailboxes " ﮊ  Archive" =ulg/Archive
    -named-mailboxes "   Trash" =ulg/Trash
    -named-mailboxes " ULIEGE" =empty/uliege
    -named-mailboxes "   Inbox" =uliege/Inbox
    -named-mailboxes "   Sent" =uliege/Sent
    -named-mailboxes "   Drafts" =uliege/Drafts
    -named-mailboxes " ﮊ  Archive" =uliege/Archive
    -named-mailboxes "   Trash" =uliege/Trash
    +
    named-mailboxes "   Search" =search
    +named-mailboxes " GMAIL" =empty/gmail
    +named-mailboxes "   Inbox" =gmail/Inbox
    +named-mailboxes "   Sent" =gmail/Sent
    +named-mailboxes "   Drafts" =gmail/Drafts
    +named-mailboxes " ﮊ  Archive" =gmail/Archive
    +named-mailboxes "   Trash" =gmail/Trash
    +named-mailboxes " ESRF" =empty/esrf
    +named-mailboxes "   Inbox" =esrf/Inbox
    +named-mailboxes "   Sent" =esrf/Sent
    +named-mailboxes "   Drafts" =esrf/Drafts
    +named-mailboxes " ﮊ  Archive" =esrf/Archive
    +named-mailboxes "   Trash" =esrf/Trash
    +named-mailboxes " ULG" =empty/ulg
    +named-mailboxes "   Inbox" =ulg/Inbox
    +named-mailboxes "   Sent" =ulg/Sent
    +named-mailboxes "   Drafts" =ulg/Drafts
    +named-mailboxes " ﮊ  Archive" =ulg/Archive
    +named-mailboxes "   Trash" =ulg/Trash
    +named-mailboxes " ULIEGE" =empty/uliege
    +named-mailboxes "   Inbox" =uliege/Inbox
    +named-mailboxes "   Sent" =uliege/Sent
    +named-mailboxes "   Drafts" =uliege/Drafts
    +named-mailboxes " ﮊ  Archive" =uliege/Archive
    +named-mailboxes "   Trash" =uliege/Trash
     
    @@ -2145,15 +1914,15 @@ named-mailboxes "  Trash" =uliege/Trash
    -
    -

    Attachments

    -
    +
    +

    Attachments

    +

    Attachment View Options

    -
    set attach_format = "[%D %t] %2n [%-7.7m/%10.10M] %.40d %> [%s] "
    +
    set attach_format = "[%D %t] %2n [%-7.7m/%10.10M] %.40d %> [%s] "
     
    @@ -2190,8 +1959,8 @@ Of ranger can be used with the A keybinding.

    Forgotten Attachment

    -
    set abort_noattach = ask-yes
    -set abort_noattach_regex = "\\<(attach(|ed|ments?)|(attaché|attachés|attache|attachons|joint|jointe|joints|jointes|joins|joignons))\\>"
    +
    set abort_noattach = ask-yes
    +set abort_noattach_regex = "\\<(attach(|ed|ments?)|(attaché|attachés|attache|attachons|joint|jointe|joints|jointes|joins|joignons))\\>"
     
    @@ -2206,11 +1975,11 @@ Of ranger can be used with the A keybinding.

    Sync Mail script

    -
    if [ $TMUX ]; then
    -    tmux split -v -l 1 ~/scripts/checkmail.sh $1 && tmux select-pane -U
    -else
    -    ~/scripts/checkmail.sh $1
    -fi
    +
    if [ $TMUX ]; then
    +    tmux split -v -l 1 checkmail $1 && tmux select-pane -U
    +else
    +    checkmail $1
    +fi
     
    @@ -2220,16 +1989,16 @@ Of ranger can be used with the A keybinding.

    Openfile Scripts

    -
    base=$(basename "$1")
    -ext="${base##*.}"
    +
    base=$(basename "$1")
    +ext="${base##*.}"
     
    -file=$(mktemp -u --suffix=".$ext")
    +file=$(mktemp -u --suffix=".$ext")
     
    -rm -f "$file"
    +rm -f "$file"
     
    -cp "$1" "$file"
    +cp "$1" "$file"
     
    -setsid xdg-open "$file" >/dev/null 2>&1 &
    +setsid xdg-open "$file" >/dev/null 2>&1 &
     
    @@ -2239,7 +2008,7 @@ setsid xdg-open "urlview Config
    -
    REGEXP (((http|https|ftp|gopher)|mailto)[.:][^ >"\t]*|www\.[-a-z0-9.]+)[^ .,;\t>">\):]
    +
    REGEXP (((http|https|ftp|gopher)|mailto)[.:][^ >"\t]*|www\.[-a-z0-9.]+)[^ .,;\t>">\):]
     
     COMMAND nohup qutebrowser %s </dev/null &>/dev/null &
     
    @@ -2255,11 +2024,11 @@ Generic

    text/plain; nvim %s
    +video/*; setsid mpv --quiet %s &
    +image/*; sxiv -a -b %s &
    +application/pdf; zathura %s &
     audio/*; /usr/bin/xdg-open %s; copiousoutput
    -video/*; setsid mpv --quiet %s &; copiousoutput
    -image/*; ~/.config/neomutt/bin/openfile.sh %s;
    -application/pdf; ~/.config/neomutt/bin/openfile.sh %s;
    -text/html; export DISPLAY=:0 && setsid qutebrowser %s; nametemplate=%s.html
    +text/html; export DISPLAY=:0 && setsid qutebrowser %s; nametemplate=%s.html
     text/html; w3m -I %{charset} -T text/html; copiousoutput;
     text/calendar; khal import --batch -a home %s && khal printics %s; copiousoutput;
     application/ics; khal import --batch -a home %s && khal printics %s; copiousoutput;
    @@ -2273,70 +2042,70 @@ Libreoffice
     
    application/docx; libreoffice %s --nologo &; copiousoutput;
     application/doc; libreoffice --nologo %s &; copiousoutput;
     
    -application/vnd.oasis.opendocument.database; libreoffice --nologo --base '%s'; copiousoutput
    -application/vnd.oasis.opendocument.chart; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.oasis.opendocument.spreadsheet; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.oasis.opendocument.spreadsheet-template; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.oasis.opendocument.graphics; libreoffice --nologo --draw '%s'; copiousoutput
    -application/vnd.oasis.opendocument.graphics-template; libreoffice --nologo --draw '%s'; copiousoutput
    -application/vnd.oasis.opendocument.presentation; libreoffice --nologo --impress '%s'; copiousoutput
    -application/vnd.oasis.opendocument.presentation-template; libreoffice --nologo --impress '%s'; copiousoutput
    -application/vnd.oasis.opendocument.formula; libreoffice --nologo --math '%s'; copiousoutput
    -application/vnd.oasis.opendocument.text; libreoffice --nologo --writer '%s'; copiousoutput
    -application/vnd.oasis.opendocument.text-master; libreoffice --nologo -global '%s'; copiousoutput
    -application/vnd.oasis.opendocument.text-template; libreoffice --nologo --writer '%s'; copiousoutput
    -application/vnd.oasis.opendocument.text-web; libreoffice --nologo -web '%s'; copiousoutput
    -application/vnd.sun.xml.base; libreoffice --nologo --writer '%s'; copiousoutput
    -application/vnd.sun.xml.calc; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.sun.xml.calc.template; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.sun.xml.draw; libreoffice --nologo --draw '%s'; copiousoutput
    -application/vnd.sun.xml.draw.template; libreoffice --nologo --draw '%s'; copiousoutput
    -application/vnd.stardivision.calc; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.stardivision.chart; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.stardivision.draw; libreoffice --nologo --draw '%s'; copiousoutput
    -application/vnd.stardivision.impress; libreoffice --nologo --impress '%s'; copiousoutput
    -application/vnd.stardivision.math; libreoffice --nologo --math '%s'; copiousoutput
    -application/vnd.stardivision.writer-global; libreoffice --nologo --writer '%s'; copiousoutput
    -application/vnd.stardivision.writer; libreoffice --nologo --writer '%s'; copiousoutput
    -application/vnd.sun.xml.impress; libreoffice --nologo --impress '%s'; copiousoutput
    -application/vnd.sun.xml.impress.template; libreoffice --nologo --impress '%s'; copiousoutput
    -application/vnd.sun.xml.math; libreoffice --nologo --math '%s'; copiousoutput
    -application/vnd.sun.xml.writer; libreoffice --nologo --writer '%s'; copiousoutput
    -application/vnd.sun.xml.writer.global; libreoffice --nologo -global '%s'; copiousoutput
    -application/vnd.sun.xml.writer.template; libreoffice --nologo --writer '%s'; copiousoutput
    -text/csv; libreoffice --nologo --calc '%s'; copiousoutput
    -text/spreadsheet; libreoffice --nologo --calc '%s'; copiousoutput
    -application/x-quattropro; libreoffice --nologo --calc '%s'; copiousoutput
    -application/x-dbf; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.ms-excel.sheet.macroEnabled.12; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.ms-excel.template.macroEnabled.12; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.openxmlformats-officedocument.spreadsheetml.template; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.lotus-1-2-3; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.ms-excel; libreoffice --nologo --calc '%s'; copiousoutput
    -application/msexcel; libreoffice --nologo --calc '%s'; copiousoutput
    -application/x-dbase; libreoffice --nologo --calc '%s'; copiousoutput
    -text/x-csv; libreoffice --nologo --calc '%s'; copiousoutput
    -application/vnd.ms-powerpoint.presentation.macroEnabled.12; libreoffice --nologo --impress '%s'; copiousoutput
    -application/vnd.ms-powerpoint.slideshow.macroEnabled.12; libreoffice --nologo --impress '%s'; copiousoutput
    -application/vnd.ms-powerpoint.template.macroEnabled.12; libreoffice --nologo --impress '%s'; copiousoutput
    -application/vnd.openxmlformats-officedocument.presentationml.presentation; libreoffice --nologo --impress '%s'; copiousoutput
    -application/vnd.openxmlformats-officedocument.presentationml.slideshow; libreoffice --nologo --impress '%s'; copiousoutput
    -application/vnd.openxmlformats-officedocument.presentationml.template; libreoffice --nologo --impress '%s'; copiousoutput
    -application/vnd.ms-powerpoint; libreoffice --nologo --impress '%s'; copiousoutput
    -application/mspowerpoint; libreoffice --nologo --impress '%s'; copiousoutput
    -text/mathml; libreoffice --nologo --math '%s'; copiousoutput
    -application/rtf; libreoffice --nologo --writer '%s'; copiousoutput
    -application/x-t602; libreoffice --nologo --writer '%s'; copiousoutput
    -application/vnd.wordperfect; libreoffice --nologo --writer '%s'; copiousoutput
    -application/vnd.ms-word.document.macroEnabled.12; libreoffice --nologo --writer '%s'; copiousoutput
    -application/vnd.ms-word.template.macroEnabled.12; libreoffice --nologo --writer '%s'; copiousoutput
    -application/vnd.openxmlformats-officedocument.wordprocessingml.document; libreoffice --nologo --writer '%s'; copiousoutput
    -application/vnd.openxmlformats-officedocument.wordprocessingml.template; libreoffice --nologo --writer '%s'; copiousoutput
    -application/vnd.ms-works; libreoffice --nologo --writer '%s'; copiousoutput
    -application/msword; libreoffice --nologo --writer '%s'; copiousoutput
    -application/wordperfect; libreoffice --nologo --writer '%s'; copiousoutput
    -text/rtf; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.oasis.opendocument.database; libreoffice --nologo --base '%s'; copiousoutput
    +application/vnd.oasis.opendocument.chart; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.oasis.opendocument.spreadsheet; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.oasis.opendocument.spreadsheet-template; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.oasis.opendocument.graphics; libreoffice --nologo --draw '%s'; copiousoutput
    +application/vnd.oasis.opendocument.graphics-template; libreoffice --nologo --draw '%s'; copiousoutput
    +application/vnd.oasis.opendocument.presentation; libreoffice --nologo --impress '%s'; copiousoutput
    +application/vnd.oasis.opendocument.presentation-template; libreoffice --nologo --impress '%s'; copiousoutput
    +application/vnd.oasis.opendocument.formula; libreoffice --nologo --math '%s'; copiousoutput
    +application/vnd.oasis.opendocument.text; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.oasis.opendocument.text-master; libreoffice --nologo -global '%s'; copiousoutput
    +application/vnd.oasis.opendocument.text-template; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.oasis.opendocument.text-web; libreoffice --nologo -web '%s'; copiousoutput
    +application/vnd.sun.xml.base; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.sun.xml.calc; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.sun.xml.calc.template; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.sun.xml.draw; libreoffice --nologo --draw '%s'; copiousoutput
    +application/vnd.sun.xml.draw.template; libreoffice --nologo --draw '%s'; copiousoutput
    +application/vnd.stardivision.calc; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.stardivision.chart; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.stardivision.draw; libreoffice --nologo --draw '%s'; copiousoutput
    +application/vnd.stardivision.impress; libreoffice --nologo --impress '%s'; copiousoutput
    +application/vnd.stardivision.math; libreoffice --nologo --math '%s'; copiousoutput
    +application/vnd.stardivision.writer-global; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.stardivision.writer; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.sun.xml.impress; libreoffice --nologo --impress '%s'; copiousoutput
    +application/vnd.sun.xml.impress.template; libreoffice --nologo --impress '%s'; copiousoutput
    +application/vnd.sun.xml.math; libreoffice --nologo --math '%s'; copiousoutput
    +application/vnd.sun.xml.writer; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.sun.xml.writer.global; libreoffice --nologo -global '%s'; copiousoutput
    +application/vnd.sun.xml.writer.template; libreoffice --nologo --writer '%s'; copiousoutput
    +text/csv; libreoffice --nologo --calc '%s'; copiousoutput
    +text/spreadsheet; libreoffice --nologo --calc '%s'; copiousoutput
    +application/x-quattropro; libreoffice --nologo --calc '%s'; copiousoutput
    +application/x-dbf; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.ms-excel.sheet.macroEnabled.12; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.ms-excel.template.macroEnabled.12; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.openxmlformats-officedocument.spreadsheetml.template; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.lotus-1-2-3; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.ms-excel; libreoffice --nologo --calc '%s'; copiousoutput
    +application/msexcel; libreoffice --nologo --calc '%s'; copiousoutput
    +application/x-dbase; libreoffice --nologo --calc '%s'; copiousoutput
    +text/x-csv; libreoffice --nologo --calc '%s'; copiousoutput
    +application/vnd.ms-powerpoint.presentation.macroEnabled.12; libreoffice --nologo --impress '%s'; copiousoutput
    +application/vnd.ms-powerpoint.slideshow.macroEnabled.12; libreoffice --nologo --impress '%s'; copiousoutput
    +application/vnd.ms-powerpoint.template.macroEnabled.12; libreoffice --nologo --impress '%s'; copiousoutput
    +application/vnd.openxmlformats-officedocument.presentationml.presentation; libreoffice --nologo --impress '%s'; copiousoutput
    +application/vnd.openxmlformats-officedocument.presentationml.slideshow; libreoffice --nologo --impress '%s'; copiousoutput
    +application/vnd.openxmlformats-officedocument.presentationml.template; libreoffice --nologo --impress '%s'; copiousoutput
    +application/vnd.ms-powerpoint; libreoffice --nologo --impress '%s'; copiousoutput
    +application/mspowerpoint; libreoffice --nologo --impress '%s'; copiousoutput
    +text/mathml; libreoffice --nologo --math '%s'; copiousoutput
    +application/rtf; libreoffice --nologo --writer '%s'; copiousoutput
    +application/x-t602; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.wordperfect; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.ms-word.document.macroEnabled.12; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.ms-word.template.macroEnabled.12; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.openxmlformats-officedocument.wordprocessingml.document; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.openxmlformats-officedocument.wordprocessingml.template; libreoffice --nologo --writer '%s'; copiousoutput
    +application/vnd.ms-works; libreoffice --nologo --writer '%s'; copiousoutput
    +application/msword; libreoffice --nologo --writer '%s'; copiousoutput
    +application/wordperfect; libreoffice --nologo --writer '%s'; copiousoutput
    +text/rtf; libreoffice --nologo --writer '%s'; copiousoutput
     
    @@ -2346,7 +2115,7 @@ text/rtf; libreoffice --nologo --writer '%s'; co

    Author: Dehaeze Thomas

    -

    Created: 2020-03-22 dim. 23:03

    +

    Created: 2020-05-26 mar. 08:40

    diff --git a/docs/matlab.html b/docs/matlab.html index 02237ce..a2781af 100644 --- a/docs/matlab.html +++ b/docs/matlab.html @@ -1,251 +1,19 @@ - - + - Matlab Configuration - -
    @@ -293,10 +61,10 @@ for the JavaScript code in this tag.

    Setup LaTeX as a default interpreter

    -
    set(groot, 'DefaultTextInterpreter', 'LaTeX');
    -set(groot, 'DefaultAxesTickLabelInterpreter', 'LaTeX');
    -set(groot, 'DefaultAxesFontName', 'LaTeX');
    -set(groot, 'DefaultLegendInterpreter', 'LaTeX');
    +
    set(groot, 'DefaultTextInterpreter', 'LaTeX');
    +set(groot, 'DefaultAxesTickLabelInterpreter', 'LaTeX');
    +set(groot, 'DefaultAxesFontName', 'LaTeX');
    +set(groot, 'DefaultLegendInterpreter', 'LaTeX');
     
    @@ -306,8 +74,8 @@ for the JavaScript code in this tag.

    Default Line Width

    -
    set(groot, 'DefaultLineLineWidth', 1.5);
    -set(groot, 'DefaultAxesLineWidth', 0.5);
    +
    set(groot, 'DefaultLineLineWidth', 1.5);
    +set(groot, 'DefaultAxesLineWidth', 0.5);
     
    @@ -317,9 +85,9 @@ for the JavaScript code in this tag.

    Default grids on all axis

    -
    set(groot, 'DefaultAxesXGrid','on');
    -set(groot, 'DefaultAxesYGrid','on');
    -set(groot, 'DefaultAxesZGrid','on');
    +
    set(groot, 'DefaultAxesXGrid','on');
    +set(groot, 'DefaultAxesYGrid','on');
    +set(groot, 'DefaultAxesZGrid','on');
     
    @@ -329,11 +97,11 @@ for the JavaScript code in this tag.

    Default Font Size

    -
    set(groot, 'DefaultTextFontUnits', 'points');
    -set(groot, 'DefaultTextFontSize', 10);
    -set(groot, 'DefaultAxesFontUnits', 'points');
    -set(groot, 'DefaultAxesFontSize', 10);
    -set(groot, 'DefaultUicontrolFontSize', 10);
    +
    set(groot, 'DefaultTextFontUnits', 'points');
    +set(groot, 'DefaultTextFontSize', 10);
    +set(groot, 'DefaultAxesFontUnits', 'points');
    +set(groot, 'DefaultAxesFontSize', 10);
    +set(groot, 'DefaultUicontrolFontSize', 10);
     
    @@ -343,8 +111,8 @@ for the JavaScript code in this tag.

    Default Fonts

    -
    set(groot, 'DefaultAxesFontName', 'Helvetica');
    -set(groot, 'DefaultTextFontName', 'Helvetica');
    +
    set(groot, 'DefaultAxesFontName', 'Helvetica');
    +set(groot, 'DefaultTextFontName', 'Helvetica');
     
    @@ -354,7 +122,7 @@ for the JavaScript code in this tag.

    Make figures into a Box

    -
    set(groot, 'DefaultAxesBox', 'on');
    +
    set(groot, 'DefaultAxesBox', 'on');
     
    @@ -364,11 +132,11 @@ for the JavaScript code in this tag.

    Default Colors

    -
    set(groot, 'DefaultAxesColor', 'w');
    -set(groot, 'DefaultAxesXColor', 'k');
    -set(groot, 'DefaultAxesYColor', 'k');
    +
    set(groot, 'DefaultAxesColor', 'w');
    +set(groot, 'DefaultAxesXColor', 'k');
    +set(groot, 'DefaultAxesYColor', 'k');
     
    -set(groot, 'DefaultFigureColor', 'w');
    +set(groot, 'DefaultFigureColor', 'w');
     
    @@ -378,15 +146,15 @@ for the JavaScript code in this tag.

    Default Plot Colors

    -
    c1 = [     0    0.4470    0.7410]; % Blue
    -c2 = [0.8500    0.3250    0.0980]; % Orange
    -c3 = [0.9290    0.6940    0.1250]; % Yellow
    -c4 = [0.4940    0.1840    0.5560]; % Purple
    -c5 = [0.4660    0.6740    0.1880]; % Green
    -c6 = [0.3010    0.7450    0.9330]; % Light Blue
    -c7 = [0.6350    0.0780    0.1840]; % Red
    +
    c1 = [     0    0.4470    0.7410]; % Blue
    +c2 = [0.8500    0.3250    0.0980]; % Orange
    +c3 = [0.9290    0.6940    0.1250]; % Yellow
    +c4 = [0.4940    0.1840    0.5560]; % Purple
    +c5 = [0.4660    0.6740    0.1880]; % Green
    +c6 = [0.3010    0.7450    0.9330]; % Light Blue
    +c7 = [0.6350    0.0780    0.1840]; % Red
     
    -set(groot, 'defaultAxesColorOrder', [c1; c2; c3; c4; c5; c6; c7])
    +set(groot, 'defaultAxesColorOrder', [c1; c2; c3; c4; c5; c6; c7])
     
    @@ -396,8 +164,8 @@ c7 = [0.6350 0.0780 0.1840]; % Red

    Figure paper and window style

    -
    set(groot, 'DefaultFigurePaperType', 'A4');
    -set(groot, 'DefaultFigureWindowStyle', 'normal');
    +
    set(groot, 'DefaultFigurePaperType', 'A4');
    +set(groot, 'DefaultFigureWindowStyle', 'normal');
     
    @@ -418,7 +186,7 @@ format long g;

    Home Path

    -
    toolboxes_path = '~/Cloud/thesis/matlab/toolboxes/';
    +
    toolboxes_path = '~/Cloud/thesis/matlab/toolboxes/';
     
    @@ -428,29 +196,30 @@ format long g;

    Add to path

    -
    addpath([toolboxes_path 'Org-Mode-Toolbox/src'])
    -addpath([toolboxes_path 'Usefull-Functions/src'])
    -addpath([toolboxes_path 'Stacked-Elements-Toolbox/src'])
    -addpath([toolboxes_path 'Measure-Analysis-Toolbox/src'])
    -addpath([toolboxes_path 'Hinf-Toolbox/src'])
    -addpath([toolboxes_path 'Fit-Model-Toolbox/src'])
    -addpath([toolboxes_path 'Dspace-Toolbox/src'])
    -addpath([toolboxes_path 'SpeedGoat-Toolbox/src'])
    -addpath([toolboxes_path 'Add-Ons/matrix_fitting_toolbox_1'])
    -addpath([toolboxes_path 'Add-Ons/matlab-schemer'])
    -addpath([toolboxes_path 'Add-Ons/matlab2tikz/src'])
    -addpath([toolboxes_path 'Add-Ons/hline_vline'])
    -addpath([toolboxes_path 'Add-Ons/export_fig'])
    -addpath([toolboxes_path 'Add-Ons/subaxis'])
    -addpath([toolboxes_path 'Add-Ons/cbrewer'])
    -addpath([toolboxes_path 'Add-Ons/tightfig'])
    -addpath([toolboxes_path 'Add-Ons/fig2svg/src'])
    -addpath([toolboxes_path 'Add-Ons/CVX'])
    +
    addpath([toolboxes_path 'Org-Mode-Toolbox/src'])
    +addpath([toolboxes_path 'Usefull-Functions/src'])
    +addpath([toolboxes_path 'Stacked-Elements-Toolbox/src'])
    +addpath([toolboxes_path 'Measure-Analysis-Toolbox/src'])
    +addpath([toolboxes_path 'Hinf-Toolbox/src'])
    +addpath([toolboxes_path 'Fit-Model-Toolbox/src'])
    +addpath([toolboxes_path 'Dspace-Toolbox/src'])
    +addpath([toolboxes_path 'SpeedGoat-Toolbox/src'])
    +addpath([toolboxes_path 'Add-Ons/matrix_fitting_toolbox_1'])
    +addpath([toolboxes_path 'Add-Ons/matlab-schemer'])
    +addpath([toolboxes_path 'Add-Ons/matlab2tikz/src'])
    +addpath([toolboxes_path 'Add-Ons/hline_vline'])
    +addpath([toolboxes_path 'Add-Ons/export_fig'])
    +addpath([toolboxes_path 'Add-Ons/subaxis'])
    +addpath([toolboxes_path 'Add-Ons/cbrewer'])
    +addpath([toolboxes_path 'Add-Ons/tightfig'])
    +addpath([toolboxes_path 'Add-Ons/fig2svg/src'])
    +addpath([toolboxes_path 'Add-Ons/CVX'])
    +addpath([toolboxes_path 'Add-Ons/MBeautifier'])
     
    -
    addpath('/home/thomas/.emacs.d/.local/straight/repos/mirror/toolbox')
    +
    addpath('/home/thomas/.emacs.d/.local/straight/repos/mirror/toolbox')
     
    @@ -476,7 +245,7 @@ addpath([toolboxes_path 'Add-Ons/CVX'])

    Schemer Import

    -
    schemer_import([home_path '/Cloud/thesis/matlab/toolboxes/Add-Ons/matlab-schemer/schemes/monokai.prf']);
    +
    schemer_import([home_path '/Cloud/thesis/matlab/toolboxes/Add-Ons/matlab-schemer/schemes/monokai.prf']);
     
    @@ -485,7 +254,7 @@ addpath([toolboxes_path 'Add-Ons/CVX'])

    Author: Dehaeze Thomas

    -

    Created: 2020-01-28 mar. 21:32

    +

    Created: 2020-05-26 mar. 08:40

    diff --git a/docs/music.html b/docs/music.html index bb594aa..6f2b4b9 100644 --- a/docs/music.html +++ b/docs/music.html @@ -1,229 +1,19 @@ - - + - Music/Sound Configuration - - @@ -311,41 +101,41 @@ Notification of song change.

    Bindings

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

    Mopidy

    -
    [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
     
    -[file]
    -enabled = true
    -media_dirs = /home/thomas/Music
    -excluded_file_extensions =
    +[file]
    +enabled = true
    +media_dirs = /home/thomas/Music
    +excluded_file_extensions =
       .db
       .directory
       .html
    @@ -412,9 +202,6 @@ plugins: fromfilename discogs
       .png
       .txt
       .zip
    -
    -[audio]
    -output = tee name=t t. ! queue ! autoaudiosink t. ! queue ! audioresample ! audioconvert ! audio/x-raw,rate=44100,channels=2,format=S16LE ! wavenc ! filesink location=/tmp/mpd.fifo
     
    @@ -424,26 +211,26 @@ plugins: fromfilename discogs

    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
     
    @@ -451,7 +238,7 @@ plugins: fromfilename discogs

    Author: Dehaeze Thomas

    -

    Created: 2020-03-19 jeu. 10:39

    +

    Created: 2020-05-26 mar. 08:40

    diff --git a/docs/newsboat.html b/docs/newsboat.html index 7f28b0b..0e82128 100644 --- a/docs/newsboat.html +++ b/docs/newsboat.html @@ -1,229 +1,19 @@ - - + - Newsboat Configuration - -
    -

    https://wiki.archlinux.org/index.php/Newsboat https://newsboat.org/releases/2.12/docs/newsboat.html @@ -285,16 +96,16 @@

    Reload configuration

    -
    # All feeds will be automatically reloaded after a certain time has passed
    +
    # All feeds will be automatically reloaded after a certain time has passed
     auto-reload yes
     
    -# The number of minutes between automatic reloads.
    -reload-time 180
    +# The number of minutes between automatic reloads.
    +reload-time 120
     
    -# The number of parallel reload threads that shall be started when all feeds are reloaded.
    -reload-threads 3
    +# The number of parallel reload threads that shall be started when all feeds are reloaded.
    +reload-threads 3
     
    -# If set to yes, then the first automatic reload will be suppressed if auto-reload is set to yes.
    +# If set to yes, then the first automatic reload will be suppressed if auto-reload is set to yes.
     suppress-first-reload yes
     
    @@ -307,27 +118,27 @@ suppress-first-reload yes
    confirm-exit no
     
    -external-url-viewer "urlscan -dc -r 'linkhandler {}'"
    +external-url-viewer "urlscan -dc -r 'linkhandler {}'"
     
     goto-first-unread no
     goto-next-feed no
     
    -# TODO - Change these
    -save-path "~/Saved Articles"
    -download-path "~/Downloads"
    +# TODO - Change these
    +save-path "~/Documents/saved-articles"
    +download-path "~/Documents/to-watch"
     
    -# If set to no, then the keymap hints on the bottom of screen will not be displayed.
    +# If set to no, then the keymap hints on the bottom of screen will not be displayed.
     show-keymap-hint no
     
    -player "mpv"
    +player "mpv"
     
    -
    -

    Queries

    -
    +
    +

    Queries

    +
    prepopulate-query-feeds yes
     
    @@ -339,7 +150,7 @@ player "mpv"

    Filters

    -
    define-filter "Unread Articles" "unread = \"yes\""
    +
    define-filter "Unread Articles" "unread = \"yes\""
     
    @@ -349,7 +160,7 @@ player "mpv"

    Notifications

    -
    notify-format "%n unread articles"
    +
    notify-format "%n unread articles"
     notify-program ~/.config/newsboat/scripts/newsboat-notify.sh
     notify-always no
     
    @@ -360,7 +171,7 @@ notify-always no

    Notification Script

    -
    dunstify --replace=38492 "Newsboat " "$1"
    +
    dunstify --replace=38492 "Newsboat " "$1"
     
    @@ -400,8 +211,8 @@ bind-key U show-urls bind-key t set-tag bind-key T clear-tag -bind-key r reload # Reload the currently selected feed -bind-key R reload-all # Reload all feeds +bind-key r reload # Reload the currently selected feed +bind-key R reload-all # Reload all feeds
    @@ -412,7 +223,7 @@ bind-key R reload-all #
    bookmark-autopilot no
    -bookmark-cmd "~/.config/newsboat/scripts/buku-add.sh"
    +bookmark-cmd "~/.config/newsboat/scripts/buku-add.sh"
     bookmark-interactive no
     
    @@ -422,9 +233,9 @@ bookmark-interactive no

    Buku Scripts

    -
    buku --add "$1" --title "$2" --comment "$3" && \
    -    dunstify "Buku" "Bookmark Added" && \
    -    exit 0
    +
    buku --add "$1" --title "$2" --comment "$3" && \
    +    dunstify "Buku" "Bookmark Added" && \
    +    exit 0
     
    @@ -435,29 +246,29 @@ bookmark-interactive no

    Macros - Starts with , key

    -
    # Default Browser
    -browser "qutebrowser %u"
    +
    # Default Browser
    +browser linkhandler
     
    -# Open in Browser
    +# Open in Browser
     macro , open-in-browser
     
    -# Download Video with Youtube-DL
    -macro t set browser "~/bin/yt-video %u" ; open-in-browser ; set browser "qutebrowser %u"
    +# Download Video with Youtube-DL
    +macro v set browser "cd ~/Documents/to-watch && ~/.local/bin/yt-video %u" ; open-in-browser ; set browser linkhandler
     
    -# Download Audio with Youtube-DL
    -macro a set browser "~/bin/yt-audio %u" ; open-in-browser ; set browser "qutebrowser %u"
    +# Download Audio with Youtube-DL
    +macro a set browser "cd ~/Documents/to-watch && ~/.local/bin/yt-audio %u" ; open-in-browser ; set browser linkhandler
     
    -# Open Video with MPV
    -macro v set browser "setsid nohup mpv %u &> /dev/null &" ; open-in-browser ; set browser "qutebrowser %u"
    +# Open Video with MPV
    +macro m set browser "setsid nohup mpv %u &> /dev/null &" ; open-in-browser ; set browser linkhandler
     
    -# Open With W3M
    -macro w set browser "w3m %u" ; open-in-browser ; set browser "qutebrowser %u"
    +# Open With W3M
    +macro w set browser "w3m %u" ; open-in-browser ; set browser linkhandler
     
    -# Copy Address to clipboard
    -macro c set browser "xsel -b <<<" ; open-in-browser ; set browser "qutebrowser %u"
    +# Copy Address to clipboard
    +macro c set browser "xsel -b <<<" ; open-in-browser ; set browser linkhandler
     
    -# Quit
    -macro q set browser "tmux detach;" ; open-in-browser ; set browser "qutebrowser %u"
    +# Quit
    +macro q set browser "tmux detach;" ; open-in-browser ; set browser linkhandler
     
    @@ -467,9 +278,9 @@ macro q set browser "tmux detach;" ; open-in-bro

    hide articles matching

    -
    ignore-article "*" "title =~ \"Sponsor\""
    -ignore-article "*" "title =~ \"Advertisement\""
    -ignore-mode "display"
    +
    ignore-article "*" "title =~ \"Sponsor\""
    +ignore-article "*" "title =~ \"Advertisement\""
    +ignore-mode "display"
     
    @@ -479,13 +290,13 @@ ignore-mode "display"

    Feedlist and Article Format

    -
    feedlist-format "%4i %n %11u %t"
    -feedlist-title-format "N %V - Your feeds (%u unread, %t total)%?T? - tag `%T'&?"
    +
    feedlist-format "%4i %n %11u %t"
    +feedlist-title-format "N %V - Your feeds (%u unread, %t total)%?T? - tag `%T'&?"
     
    -articlelist-format "%3i %f %D  %?T?|%-17T| ?%t"
    -articlelist-title-format "%N %V - Articles in feed '%T' (%u unread, %t total) - %U"
    +articlelist-format "%3i %f %D  %?T?|%-17T| ?%t"
    +articlelist-title-format "%N %V - Articles in feed '%T' (%u unread, %t total) - %U"
     
    -itemview-title-format "Article '%T'"
    +itemview-title-format "Article '%T'"
     
    @@ -495,7 +306,7 @@ itemview-title-format "Article '%T'"

    Color Scheme

    -
    include "~/.config/newsboat/colors"
    +
    include "~/.config/newsboat/colors"
     
    @@ -514,10 +325,10 @@ color listfocus_unread black yellow color info default black color article default default -# highlights -highlight article "^(Title):.*$" blue default -highlight article "https?://[^ ]+" red default -highlight article "\\[image\\ [0-9]+\\]" green default +# highlights +highlight article "^(Title):.*$" blue default +highlight article "https?://[^ ]+" red default +highlight article "\\[image\\ [0-9]+\\]" green default
    @@ -528,15 +339,15 @@ highlight article "\\[image\\ [0-9]+\\]" green d
    -
    -

    Queries

    -
    +
    +

    Queries

    +
    -
    "query:Unread:unread = \"yes\""
    -"query:Unwatch - Youtube:unread = \"yes\" and tags # \"youtube\""
    -"query:Unread - Linux:unread = \"yes\" and tags # \"linux\""
    -"query:Unread - Emacs:unread = \"yes\" and tags # \"emacs\""
    -"query:Unread - Sciences:unread = \"yes\" and tags # \"science\""
    +
    "query:Unread:unread = \"yes\""
    +"query:Unwatch - Youtube:unread = \"yes\" and tags # \"youtube\""
    +"query:Unread - Linux:unread = \"yes\" and tags # \"linux\""
    +"query:Unread - Emacs:unread = \"yes\" and tags # \"emacs\""
    +"query:Unread - Sciences:unread = \"yes\" and tags # \"science\""
     
    @@ -545,224 +356,373 @@ highlight article "\\[image\\ [0-9]+\\]" green d

    Newsfeeds

    +
    +
    +

    Matlab and Control

    +
    -
    https://undocumentedmatlab.com/feed/                                   "~RSS undocumentedmatlab" matlab
    -http://blogs.mathworks.com/seth/feed/                                  "~RSS Guy on Simulink" matlab control
    -http://blogs.mathworks.com/loren/?feed=rss2                            "~RSS Loren on the Art of MATLAB" matlab
    -http://blogs.mathworks.com/pick/feed/                                  "~RSS File Exchange Pick of the Week" matlab
    -https://enriquedelsol.com/feed/                                        "~RSS Enrique del Sol" control
    -http://brettbeauregard.com/blog/feed/                                  "~RSS Project Blog" control
    -http://jipihorn.wordpress.com/feed/                                    "~RSS Jipihorn's Blog" electronics audio
    -http://sciencetonnante.wordpress.com/feed/                             "~RSS Science étonnante" science
    -https://yiufung.net/index.xml                                          "~RSS yiufung" emacs
    -https://bzg.fr/index.xml                                               "~RSS bzg" emacs
    -https://thomashartmann.dev/rss.xml                                     "~RSS thomashartmann.dev" emacs linux
    -http://cachestocaches.com/feed/                                        "~RSS CachesToCaches" emacs
    -http://frederic.bezies.free.fr/blog/?feed=rss2                         "~RSS Le Weblog de Frederic Bezies" linux
    -https://la-bibliotex.fr/feed/                                          "~RSS La biblioTeX" latex
    -https://so.nwalsh.com/feed/                                            "~RSS so..." emacs
    -http://karl-voit.at/feeds/lazyblorg-all.atom_1.0.links-and-content.xml "~RSS Public Voit" emacs
    -https://people.umass.edu/weikaichen/index.xml                          "~RSS Weikai Chen" emacs
    -https://babbagefiles.xyz/index.xml                                     "~RSS The Neo-Babbage Files" linux emacs
    -https://write.as/dani/feed/                                            "~RSS Dani" emacs
    -https://lepisma.xyz/atom.xml                                           "~RSS Lepisma" emacs
    -http://kitchingroup.cheme.cmu.edu/blog/feed                            "~RSS The Kitchin Research Group" emacs
    -http://lukesmith.xyz/rss.xml                                           "~RSS The Latest from Luke" linux
    -http://manuel-uberti.github.io/feed.xml                                "~RSS Manuel Uberti" emacs
    -https://lord.re/index.xml                                              "~RSS /home/lord" linux
    -http://pragmaticemacs.com/feed/                                        "~RSS Pragmatic Emacs" emacs
    -https://mburkeonmbd.com/feed/                                          "~RSS Model-Based Design" control matlab
    -https://jonathanabennett.github.io/rss.xml                             "~RSS Jonathan Bennett's Blog" emacs
    -https://joshrollinswrites.com/index.xml                                "~RSS The Art of Not Asking Why" emacs linux
    -http://endlessparentheses.com/atom.xml                                 "~RSS Endless Parentheses" emacs
    -https://www.gonsie.com/blorg/feed.xml                                  "~RSS Elsa Gonsiorowski" emacs
    -http://tiagoweber.github.io/blog.xml                                   "~RSS Tiago Oliveira Weber" matlab emacs science
    -https://shreyas.ragavan.co/index.xml                                   "~RSS Shreyas Ragavan" emacs
    -https://pinecast.com/feed/emacscast                                    "~RSS EmacsCast" emacs
    -http://amitp.blogspot.com/feeds/posts/default                          "~RSS Amit's Thoughts" emacs
    -http://sachachua.com/wp/category/emacs/feed/                           "~RSS Sacha Chua" emacs
    -https://cestlaz.github.io/rss.xml                                      "~RSS C'est la Z" emacs
    -https://www-public.imtbs-tsp.eu/~berger_o/weblog/tag/org-mode/feed/    "~RSS WebLog Pro Olivier Berger" emacs
    -https://scripter.co/index.xml                                          "~RSS A Scripter's Notes" linux emacs
    -https://assortedarray.com/index.xml                                    "~RSS Assorted Array" emacs
    -https://www.with-emacs.com/rss.xml                                     "~RSS with-emacs" emacs
    -https://linktohack.com/index.xml                                       "~RSS QL's blog" emacs
    -https://itsfoss.com/feed                                               "~RSS It's FOSS" linux
    -https://llazarek.com/feeds/all.rss.xml                                 "~RSS llazarek" emacs
    -https://200ok.ch/atom.xml                                              "~RSS 200ok" emacs
    -http://irreal.org/blog/?feed=rss2                                      "~RSS Irreal" emacs
    -https://emacs.cafe/feed.xml                                            "~RSS Emacs café" emacs
    -http://vxlabs.com/feed/                                                "~RSS vxlabs" emacs linux
    -https://www.rousette.org.uk/index.xml                                  "~RSS But she's a Girl..." emacs
    -https://brushingupscience.com/feed/                                    "~RSS Brushing Up Science" science
    -https://www.anand-iyer.com/feed.xml                                    "~RSS Anand Iyer" emacs
    -https://addy-dclxvi.github.io/index.xml                                "~RSS Addy's Blog" linux
    -https://ekaschalk.github.io/index.xml                                  "~RSS Modern Emacs" emacs
    -http://howardism.org/index.xml                                         "~RSS Howardism" emacs
    -http://xkcd.com/rss.xml                                                "~RSS XKCD" random
    -https://quantasylum.com/blogs/news.atom                                "~RSS QuantAsylum" audio
    +
    https://undocumentedmatlab.com/feed/                                   "~RSS undocumentedmatlab" matlab
    +http://blogs.mathworks.com/seth/feed/                                  "~RSS Guy on Simulink" matlab control
    +http://blogs.mathworks.com/loren/?feed=rss2                            "~RSS Loren on the Art of MATLAB" matlab
    +http://blogs.mathworks.com/pick/feed/                                  "~RSS File Exchange Pick of the Week" matlab
    +https://enriquedelsol.com/feed/                                        "~RSS Enrique del Sol" control
    +http://brettbeauregard.com/blog/feed/                                  "~RSS Project Blog" control
    +https://mburkeonmbd.com/feed/                                          "~RSS Model-Based Design" control matlab
     
    +
    +

    Audio and Electronics

    +
    +
    +
    http://jipihorn.wordpress.com/feed/                                    "~RSS Jipihorn's Blog" electronics audio
    +https://quantasylum.com/blogs/news.atom                                "~RSS QuantAsylum" audio
    +
    +
    +
    +
    + +
    +

    Science

    +
    +
    +
    http://sciencetonnante.wordpress.com/feed/                             "~RSS Science étonnante" science
    +https://brushingupscience.com/feed/                                    "~RSS Brushing Up Science" science
    +
    +
    +
    +
    + +
    +

    Linux, Emacs and Computer Science

    +
    +
    +
    https://yiufung.net/index.xml                                          "~RSS yiufung" emacs
    +https://bzg.fr/index.xml                                               "~RSS bzg" emacs
    +https://thomashartmann.dev/rss.xml                                     "~RSS thomashartmann.dev" emacs linux
    +http://cachestocaches.com/feed/                                        "~RSS CachesToCaches" emacs
    +http://frederic.bezies.free.fr/blog/?feed=rss2                         "~RSS Le Weblog de Frederic Bezies" linux
    +https://la-bibliotex.fr/feed/                                          "~RSS La biblioTeX" latex
    +https://so.nwalsh.com/feed/                                            "~RSS so..." emacs
    +http://karl-voit.at/feeds/lazyblorg-all.atom_1.0.links-and-content.xml "~RSS Public Voit" emacs
    +https://people.umass.edu/weikaichen/index.xml                          "~RSS Weikai Chen" emacs
    +https://babbagefiles.xyz/index.xml                                     "~RSS The Neo-Babbage Files" linux emacs
    +https://write.as/dani/feed/                                            "~RSS Dani" emacs
    +https://lepisma.xyz/atom.xml                                           "~RSS Lepisma" emacs
    +http://kitchingroup.cheme.cmu.edu/blog/feed                            "~RSS The Kitchin Research Group" emacs
    +http://lukesmith.xyz/rss.xml                                           "~RSS The Latest from Luke" linux
    +http://manuel-uberti.github.io/feed.xml                                "~RSS Manuel Uberti" emacs
    +https://lord.re/index.xml                                              "~RSS /home/lord" linux
    +https://beepb00p.xyz/rss.xml                                           "~RSS beepb00p" linux emacs
    +http://pragmaticemacs.com/feed/                                        "~RSS Pragmatic Emacs" emacs
    +https://jonathanabennett.github.io/rss.xml                             "~RSS Jonathan Bennett's Blog" emacs
    +https://joshrollinswrites.com/index.xml                                "~RSS The Art of Not Asking Why" emacs linux
    +http://endlessparentheses.com/atom.xml                                 "~RSS Endless Parentheses" emacs
    +https://www.gonsie.com/blorg/feed.xml                                  "~RSS Elsa Gonsiorowski" emacs
    +http://tiagoweber.github.io/blog.xml                                   "~RSS Tiago Oliveira Weber" matlab emacs science
    +https://shreyas.ragavan.co/index.xml                                   "~RSS Shreyas Ragavan" emacs
    +https://pinecast.com/feed/emacscast                                    "~RSS EmacsCast" emacs
    +http://amitp.blogspot.com/feeds/posts/default                          "~RSS Amit's Thoughts" emacs
    +http://sachachua.com/wp/category/emacs/feed/                           "~RSS Sacha Chua" emacs
    +https://cestlaz.github.io/rss.xml                                      "~RSS C'est la Z" emacs
    +https://www-public.imtbs-tsp.eu/~berger_o/weblog/tag/org-mode/feed/    "~RSS WebLog Pro Olivier Berger" emacs
    +https://scripter.co/index.xml                                          "~RSS A Scripter's Notes" linux emacs
    +https://assortedarray.com/index.xml                                    "~RSS Assorted Array" emacs
    +https://www.with-emacs.com/rss.xml                                     "~RSS with-emacs" emacs
    +https://linktohack.com/index.xml                                       "~RSS QL's blog" emacs
    +https://itsfoss.com/feed                                               "~RSS It's FOSS" linux
    +https://llazarek.com/feeds/all.rss.xml                                 "~RSS llazarek" emacs
    +https://200ok.ch/rss.xml                                               "~RSS 200ok" emacs
    +http://irreal.org/blog/?feed=rss2                                      "~RSS Irreal" emacs
    +https://emacs.cafe/feed.xml                                            "~RSS Emacs café" emacs
    +http://vxlabs.com/feed/                                                "~RSS vxlabs" emacs linux
    +https://www.rousette.org.uk/index.xml                                  "~RSS But she's a Girl..." emacs
    +https://www.anand-iyer.com/feed.xml                                    "~RSS Anand Iyer" emacs
    +https://addy-dclxvi.github.io/index.xml                                "~RSS Addy's Blog" linux
    +https://ekaschalk.github.io/index.xml                                  "~RSS Modern Emacs" emacs
    +http://howardism.org/index.xml                                         "~RSS Howardism" emacs
    +http://xkcd.com/rss.xml                                                "~RSS XKCD" random
    +https://blog.jethro.dev/index.xml                                      "~RSS Jethro Kuan" emacs
    +https://lord.re/posts/index.xml                                        "~RSS Lord~" linux
    +https://rgoswami.me/posts/index.xml                                    "~RSS Rohit Goswami~" linux emacs
    +# https://jonathanh.co.uk/
    +
    +
    +
    +
    +
    +

    Youtube

    +
    +
    +

    Matlab and Control

    +
    -
    https://www.youtube.com/feeds/videos.xml?channel_id=UCNqFXwI5gNcyxt2c1zTQAKw "~YT Yisrael Dov L" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCGEBcDJ7QIY1LuEddDM9x9Q "~YT Oldies" youtube 3d-printing
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "~YT Luke Smith" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCSlhlkPaq3RL1CP0Tv1xWBQ "~YT MIT Institute for Data, Systems, and Society" youtube science control
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCqdRx3JV3xRchi4_xwFJUTA "~YT 8FabLab" youtube diy
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCwgqYNmYaij2_8hq_tOFyZw "~YT Aurelien Barrau" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCNmLe68qKzdjuEpT_YTDFuA "~YT Etonnarium" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCJM10Rp7G0h9j5S92QszJ5Q "~YT Tales From The Click" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCCSN5zJTKjl6UKvPcLzLuiw "~YT Macroscopie" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCkf4VIqu3Acnfzuk3kRIFwA "~YT gotbletu" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC7DdEm33SyaTDtWYGO2CwdA "~YT Physics Girl" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCRCdl2SXma02BG384RuZPqg "~YT katkimshow" youtube science control
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC3gZqwD45zGCsduBn-Q2lew "~YT Gabrielle Grau" youtube music
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCVHICXXtKG7rZgtC5xonNdQ "~YT Howard Abrams" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCgREucssIfY9e0Iy3yhse8w "~YT Conner McDaniel" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCCMxHHciWRBBouzk-PGzmtQ "~YT Bazar du Grenier" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC2_OG1L8DLTzQ7UrZVOk7OA "~YT Axolot" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCeR8BYZS7IHYjk_9Mh5JgkA "~YT Scilabus" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC_ZChHhr5nDrUymz7qsRqRw "~YT Confér'ENS" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCGNxF654kRelnM0nKxM6QDQ "~YT Tom Oomen" youtube science control
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCTt2AnK--mnRmICnf-CCcrw "~YT Le Rire Jaune" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCtpB66XKjAtFZfZyzmC-_Cg "~YT HexiBase" youtube audio
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCdL3UpiseRlvxXuORJjmqZw "~YT Stardust" youtube space
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCEfFUaIkjbI06PhALdcXNVA "~YT EmacsCast" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCCsdIja21VT7AKkbVI5y8bQ "~YT Alain Vaillancourt" youtube diy
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCq0imsn84ShAe9PBOFnoIrg "~YT Brian Douglas" youtube control
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCzgkOWKcwy0uhYilE6bd1Lg "~YT Zaiste Programming" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCmkP178NasnhR3TWQyyP4Gw "~YT How To Mechatronics" youtube science control
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCYnrHo7CDgKobmoJ3Borrnw "~YT Niklas Carlsson" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC1Ue7TuX3iH4y8-Qrjj-hyg "~YT J'm'énerve pas, j'explique" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC5dAH2txWtKSsgmRglRB88A "~YT kyptin" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCvGag7MyHR8H9oRm9iL9Ifw "~YT Experimentboy" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCJRljQ8OcyfzHBYpS_bDbow "~YT La Mezzanine" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC6107grRI4m0o2-emgoDnAA "~YT SmarterEveryDay" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCyi6pFP-lmaDD3Eb4dqsvdg "~YT ioduremetallique" youtube diy
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCSULDz1yaHLVQWHpm4g_GHA "~YT monsieur bidouille" youtube diy
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCYI8olK-jH9Ubc2FaA2LgPw "~YT Egalistel" youtube 3d-printing
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCld68syR8Wi-GY_n4CaoJGA "~YT Brodie Robertson" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCUF4bHszxd8T4ulrvLejumA "~YT Alexander Fu" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCI-FgEdZQxBASsm3HNcWKxQ "~YT Red Robbo's Workshop" youtube linux audio
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCGIr92yrDW4cRLD-QaZmS6w "~YT Ethan Winer" youtube audio
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCVTAmJvZOxuj9Kto8Ty9L8Q "~YT Rapha Gaming" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCtqICqGbPSbTN09K1_7VZ3Q "~YT DirtyBiology" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCotwjyJnb-4KW7bmsOoLfkg "~YT Art of the Problem" youtube engineering
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCXPHFM88IlFn68OmLwtPmZA "~YT Greg Hurrell" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCvA_wgsX6eFAOXI8Rbg_WiQ "~YT tutoriaLinux" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC2UT8pPDlUvRbQXTVOf5Ocw "~YT Henri Hihacks" youtube diy
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCTafEJoRl5myC8A50plIrng "~YT FabienOlicard" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCNm2TzhsV5wGlFIAcpCx9hQ "~YT Jousef Murad" youtube engineering matlab
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCZHPwKyeypWwU8SNJSzQhCw "~YT Révisons nos Classiques" youtube music
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCzabZYC0MYRR2MFkq62d6yQ "~YT Florent Garcia" youtube music
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCZeyUZmGAyRLDfM2ir3q-OQ "~YT Captain Popcorn" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCR1IuLEqb6UEA_zQ81kwXfg "~YT Real Engineering" youtube engineering
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCjsHDXUU3BjBCG7OaCbNDyQ "~YT Le Sense Of Wonder" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCPUuVY7w8brL0r__P8UBgyQ "~YT Christopher Lum" youtube matlab control
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCLecVrux63S6aYiErxdiy4w "~YT BRUH Automation" youtube diy
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC2LZO6swZ9SLUEOks3WnsfA "~YT 2veritasium" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCwzxu1j19ICnfW5zrBvUw-w "~YT Une bière et Jivay" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC7vVhkEfw4nOGp8TyDk7RcQ "~YT BostonDynamics" youtube control engineering
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC5X4e8ScZI2AFd_vkjSoyoQ "~YT AstronoGeek" youtube space
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCPF7JOWMDWZmnP_cQfyAezg "~YT Scinéma" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCfsznjef2zGJnrCRQBXqo6Q "~YT Machine Thinking" youtube engineering
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC2bkHVIDjXS7sgrgjFtzOXQ "~YT engineerguy" youtube engineering
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC5QPFDZ3Y4ylkkGJc6Y1OOA "~YT Philippe Demerliac" youtube electronics
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCkRmQ_G_NbdbCQMpALg6UPg "~YT emacsrocks" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCUK0HBIBWgM2c4vsPhkYY4w "~YT The Slow Mo Guys" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCGgvKW19IWVvUUblrr8EgHA "~YT Experimentboy 2" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCxjDcP3Su59bg5VDnlwyt5A "~YT Bailey Ling" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCJZ94qp4dtCw0Q5UQqAkg7w "~YT larsandersen23" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC0uTPqBCFIpZxlz_Lv1tk_g "~YT Protesilaos Stavrou" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCDPK_MTu3uTUFJXRVcTJcEw "~YT Mcfly et Carlito" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCQfMyugsjrVUWU0v_ZxQs2Q "~YT Machine Tech Video Blog" youtube diy engineering
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCslWMxX93gcaiXwxMv4asHA "~YT Jean Maurer Swiss Audio Manufacture SA" youtube audio
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC4PasDd25MXqlXBogBw9CAg "~YT Mickaël Launay" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCjED9uS41ioeFuPfbR-OBlw "~YT Les Freres Poulain" youtube diy
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCxeA1l2E5AYrtpkqUbBEg3A "~YT Pierre Lecourt" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCVSHXNNBitaPd5lYz48--yg "~YT Tech Ingredients" youtube diy
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCP5tjEmvPItGyLhmjdwP7Ww "~YT RealLifeLore" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCi8XrDg1bK_MJ0goOnbpTMQ "~YT budlabs" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCIFJHWyIlN0XFrW2vMKG6QA "~YT Alain M. Lafon" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCwbV8cTR4yBgFdfa_BXV2OA "~YT Le Fossoyeur de Films" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCHnyfMqiRRG1u-2MsSQLbXA "~YT Veritasium" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCH6ppHEvV3_WIXEwmhv9HEg "~YT Deus Ex Silicium" youtube engineering science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCfbGTpcJyEOMwKP-eYz3_fg "~YT Rainer König" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCYD22MFqaNqXp-ogTMosW_A "~YT Le Show Jaune" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCND0gjuG9ltEWDvh82VJITg "~YT Jeannot Nymouce" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCPpNtkHeCnwN7Tl5oLq4AAg "~YT Une chanson, l'addition" youtube music
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCsnGwSIHyoYN0kiINAGUKxg "~YT Wolfgang's Channel" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCsz9DiwPtgDvxJ-njWnieZw "~YT Passe-Science" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCivA7_KLKWo43tFcCkFvydw "~YT Applied Science" youtube science engineering
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC4HANn7TBY-xcION-eL3rLA "~YT Daniil le Russe" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC_GlthPB9gzdxfkTTEIVxMA "~YT Incroyables Expériences" youtube science engineering
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCQp2VLAOlvq142YN3JO3y8w "~YT John Kitchin" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCFk8kgNu_bqsRZewxMGqkzQ "~YT Emacs SF" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCww2zZWg4Cf5xcRKG-ThmXQ "~YT NORMAN FAIT DES VIDÉOS" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCkEa1AfdeB93-he4VziKGFg "~YT JIGMÉ" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCMBXZxd-j6VqrynykO1dURw "~YT John Rossiter" youtube control
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCaNlbnghtwlsGF-KzAFThqA "~YT ScienceEtonnante" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC6mzA8J7n0ylf0RnDpj-vrg "~YT PS Audio" youtube audio
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCPFChjpOgkUqckj3378jt5w "~YT Heliox" youtube 3d-printing
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCf0mOxfawezlHIVuHd3L2VA "~YT Didi Chandouidoui" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCoZoRz4-y6r87ptDp4Jk74g "~YT Palmashow" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCbW6-rTEn6nPj56K_9dLozQ "~YT Gilles Castel" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCy0tKL1T7wFoYcxCe0xjN6Q "~YT Technology Connections" youtube audio engineering
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCVqx3vXNghSqUcVg2nmegYA "~YT U꞊RI" youtube electronics diy
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCeQEKFH31vvD-InkTGSvCrA "~YT brusspup" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC5ClFK9Ko4ACRgXjRZc_GfA "~YT Rhinofeed" youtube keyboards
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCw3tZ7g_FljNjzGprCuptpA "~YT Taupe10" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCAFQjCZo5okIPkHUQlBZM-g "~YT Bonjour Tristesse" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCxqAWLTk1CmBvZFPzeZMd9A "~YT Domain of Science" youtube science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCUR1pFG_3XoZn3JNKjulqZg "~YT thoughtbot" youtube linux emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCDEtZ7AKmwS0_GNJog01D2g "~YT Uncle Dave" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCSqyMHDUsc1gs6wz4sUy91w "~YT jipihorn" youtube electronics audio
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCfXXAQ-mp1uUcvSpvMcAAtw "~YT LinksTheSun" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCm3C3OSgcyzaTBXrNRupB3Q "~YT Le Woop" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg "~YT DistroTube" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCm5mt-A4w61lknZ9lCsZtBw "~YT Steve Brunton" youtube control science
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCuBzVunAVbcwzMfQaJVacuw "~YT LE ROI DES RATS" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCljOhRB2a3sQgLCdK9CHQvQ "~YT Leafshade Software" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCyWqModMQlbIo8274Wh_ZsQ "~YT Cyprien" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCxkMDXQ5qzYOgXPRnOBrp1w "~YT Mike Zamansky" youtube emacs
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCk0fGHsCEzGig-rSzkfCjMw "~YT The Engineering Mindset" youtube engineering
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCWeg2Pkate69NFdBeuRFTAw "~YT Squeezie" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC5_Y-BKzq1uW_2rexWkUzlA "~YT New Mind" youtube engineering
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCwRXb5dUK4cvsHbx-rGzSgw "~YT Derek Banas" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC_17P1ruDpCVujf7C_SxhOA "~YT Metalliquoi" youtube music
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC2yitP8oH86YBRVU4anycoA "~YT Quentin Lebastard" youtube keyboards
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCUJQSGHlYC9Xyz-uNfSpSsA "~YT ElectronikHeart" youtube electronics
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCP2bshADPrVMoNrdJvZEQzw "~YT KeepItTechie" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCtI6_1vGanPlH5lgVIDjJGQ "~YT MrAntoineDaniel" youtube random
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCoUOaSVYkTV6W4uLvxvgiFA "~YT Nathan Kutz" youtube science control
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCVRJ6D343dX-x730MRP8tNw "~YT cocadmin" youtube linux
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC5eOLQO5VUEFJukNg9cl5jg "~YT Histoire Brève" youtube interesting
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCMFcMhePnH4onVHt2-ItPZw "~YT Hygiène Mentale" youtube interesting
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC9BnGZLT4iPaJtDOXYwQuHQ "~YT Primum Non Nocere" youtube interesting
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCP46_MXP_WG_auH88FnfS1A "~YT Nota Bene" youtube interesting
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCUR03ZSZlEvCO6EWwv4jU2w "~YT Absol Vidéos" youtube interesting
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCWty1tzwZW_ZNSp5GVGteaA "~YT La statistique expliquée à mon chat" youtube interesting
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCLbgxBMMEo6mAYe87esxGmg "~YT horror humanum est" youtube interesting
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCOuIgj0CYCXCvjWywjDbauw "~YT Chat Sceptique" youtube interesting
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCOuow_HIYmeaIqi42zVs3qg "~YT Kirby Meets Audio" youtube audio
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC6mIxFTvXkWQVEHPsEdflzQ "~YT GreatScott" youtube diy
    -https://www.youtube.com/feeds/videos.xml?channel_id=UCWOhWAOydPUqillkpt5UlaA "~YT Dakoustics" youtube audio
    -https://www.youtube.com/feeds/videos.xml?channel_id=UC9_nxvBohH1G2yR77XTdA2g "~YT Tommy Desrochers" youtube 3d-printing diy
    +
    https://www.youtube.com/feeds/videos.xml?channel_id=UCm5mt-A4w61lknZ9lCsZtBw "~YT Steve Brunton" youtube control science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCoUOaSVYkTV6W4uLvxvgiFA "~YT Nathan Kutz" youtube science control
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCSlhlkPaq3RL1CP0Tv1xWBQ "~YT MIT Institute for Data, Systems, and Society" youtube science control
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCmkP178NasnhR3TWQyyP4Gw "~YT How To Mechatronics" youtube science control
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCGNxF654kRelnM0nKxM6QDQ "~YT Tom Oomen" youtube science control
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCRCdl2SXma02BG384RuZPqg "~YT katkimshow" youtube science control
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCq0imsn84ShAe9PBOFnoIrg "~YT Brian Douglas" youtube control
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC7vVhkEfw4nOGp8TyDk7RcQ "~YT BostonDynamics" youtube control engineering
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCPUuVY7w8brL0r__P8UBgyQ "~YT Christopher Lum" youtube matlab control
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCNm2TzhsV5wGlFIAcpCx9hQ "~YT Jousef Murad" youtube engineering matlab
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCMBXZxd-j6VqrynykO1dURw "~YT John Rossiter" youtube control
     
    + +
    +

    Audio and Electronics

    +
    +
    +
    https://www.youtube.com/feeds/videos.xml?channel_id=UCI-FgEdZQxBASsm3HNcWKxQ "~YT Red Robbo's Workshop" youtube linux audio
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCtpB66XKjAtFZfZyzmC-_Cg "~YT HexiBase" youtube audio
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCGIr92yrDW4cRLD-QaZmS6w "~YT Ethan Winer" youtube audio
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCslWMxX93gcaiXwxMv4asHA "~YT Jean Maurer Swiss Audio Manufacture SA" youtube audio
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC6mzA8J7n0ylf0RnDpj-vrg "~YT PS Audio" youtube audio
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCy0tKL1T7wFoYcxCe0xjN6Q "~YT Technology Connections" youtube audio engineering
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCSqyMHDUsc1gs6wz4sUy91w "~YT jipihorn" youtube electronics audio
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCOuow_HIYmeaIqi42zVs3qg "~YT Kirby Meets Audio" youtube audio
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCWOhWAOydPUqillkpt5UlaA "~YT Dakoustics" youtube audio
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCm2rchKqdoSKdB448TTVEnQ "~YT Impulse Audio" youtube audio
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC5QPFDZ3Y4ylkkGJc6Y1OOA "~YT Philippe Demerliac" youtube electronics
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCVqx3vXNghSqUcVg2nmegYA "~YT U꞊RI" youtube electronics diy
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCUJQSGHlYC9Xyz-uNfSpSsA "~YT ElectronikHeart" youtube electronics
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC74xmXx1NfeIIa44J1IU84w "~YT Audio Fest" youtube audio
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCP_yR0wxxyLa46rRgsmje3Q "~YT DIY Speaker Building" youtube audio
    +
    +
    +
    +
    + +
    +

    Linux, Emacs and Computer Science

    +
    +
    +
    https://www.youtube.com/feeds/videos.xml?channel_id=UCNqFXwI5gNcyxt2c1zTQAKw "~YT Yisrael Dov L" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "~YT Luke Smith" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCkf4VIqu3Acnfzuk3kRIFwA "~YT gotbletu" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCVHICXXtKG7rZgtC5xonNdQ "~YT Howard Abrams" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCEfFUaIkjbI06PhALdcXNVA "~YT EmacsCast" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCzgkOWKcwy0uhYilE6bd1Lg "~YT Zaiste Programming" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC5dAH2txWtKSsgmRglRB88A "~YT kyptin" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCld68syR8Wi-GY_n4CaoJGA "~YT Brodie Robertson" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCXPHFM88IlFn68OmLwtPmZA "~YT Greg Hurrell" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCxjDcP3Su59bg5VDnlwyt5A "~YT Bailey Ling" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCi8XrDg1bK_MJ0goOnbpTMQ "~YT budlabs" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCfbGTpcJyEOMwKP-eYz3_fg "~YT Rainer König" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCsnGwSIHyoYN0kiINAGUKxg "~YT Wolfgang's Channel" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCQp2VLAOlvq142YN3JO3y8w "~YT John Kitchin" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCFk8kgNu_bqsRZewxMGqkzQ "~YT Emacs SF" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCIFJHWyIlN0XFrW2vMKG6QA "~YT Alain M. Lafon" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCvA_wgsX6eFAOXI8Rbg_WiQ "~YT tutoriaLinux" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCUF4bHszxd8T4ulrvLejumA "~YT Alexander Fu" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCbW6-rTEn6nPj56K_9dLozQ "~YT Gilles Castel" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCUR1pFG_3XoZn3JNKjulqZg "~YT thoughtbot" youtube linux emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg "~YT DistroTube" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCDEtZ7AKmwS0_GNJog01D2g "~YT Uncle Dave" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCYnrHo7CDgKobmoJ3Borrnw "~YT Niklas Carlsson" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCljOhRB2a3sQgLCdK9CHQvQ "~YT Leafshade Software" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCwRXb5dUK4cvsHbx-rGzSgw "~YT Derek Banas" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCP2bshADPrVMoNrdJvZEQzw "~YT KeepItTechie" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCVRJ6D343dX-x730MRP8tNw "~YT cocadmin" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCxkMDXQ5qzYOgXPRnOBrp1w "~YT Mike Zamansky" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCgREucssIfY9e0Iy3yhse8w "~YT Conner McDaniel" youtube linux
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCkRmQ_G_NbdbCQMpALg6UPg "~YT emacsrocks" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC0uTPqBCFIpZxlz_Lv1tk_g "~YT Protesilaos Stavrou" youtube emacs
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCsJXkw_Ssp-1myJFm4_SMJA "~YT Seorenn" youtube emacs
    +
    +
    +
    +
    + +
    +

    3D-Printing and DIY

    +
    +
    +
    https://www.youtube.com/feeds/videos.xml?channel_id=UCGEBcDJ7QIY1LuEddDM9x9Q "~YT Oldies" youtube 3d-printing
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCqdRx3JV3xRchi4_xwFJUTA "~YT 8FabLab" youtube diy
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCCsdIja21VT7AKkbVI5y8bQ "~YT Alain Vaillancourt" youtube diy
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCyi6pFP-lmaDD3Eb4dqsvdg "~YT ioduremetallique" youtube diy
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCYI8olK-jH9Ubc2FaA2LgPw "~YT Egalistel" youtube 3d-printing
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCSULDz1yaHLVQWHpm4g_GHA "~YT monsieur bidouille" youtube diy
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC2UT8pPDlUvRbQXTVOf5Ocw "~YT Henri Hihacks" youtube diy
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCLecVrux63S6aYiErxdiy4w "~YT BRUH Automation" youtube diy
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCQfMyugsjrVUWU0v_ZxQs2Q "~YT Machine Tech Video Blog" youtube diy engineering
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCjED9uS41ioeFuPfbR-OBlw "~YT Les Freres Poulain" youtube diy
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCVSHXNNBitaPd5lYz48--yg "~YT Tech Ingredients" youtube diy
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCPFChjpOgkUqckj3378jt5w "~YT Heliox" youtube 3d-printing
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC9_nxvBohH1G2yR77XTdA2g "~YT Tommy Desrochers" youtube 3d-printing diy
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC6mIxFTvXkWQVEHPsEdflzQ "~YT GreatScott" youtube diy
    +
    +
    +
    +
    + +
    +

    Engineering

    +
    +
    +
    +
    +
    +
    +
    + +
    +

    Interesting - General

    +
    +
    +
    https://www.youtube.com/feeds/videos.xml?channel_id=UC5eOLQO5VUEFJukNg9cl5jg "~YT Histoire Brève" youtube interesting
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCMFcMhePnH4onVHt2-ItPZw "~YT Hygiène Mentale" youtube interesting
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC9BnGZLT4iPaJtDOXYwQuHQ "~YT Primum Non Nocere" youtube interesting
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCP46_MXP_WG_auH88FnfS1A "~YT Nota Bene" youtube interesting
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCUR03ZSZlEvCO6EWwv4jU2w "~YT Absol Vidéos" youtube interesting
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCWty1tzwZW_ZNSp5GVGteaA "~YT La statistique expliquée à mon chat" youtube interesting
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCLbgxBMMEo6mAYe87esxGmg "~YT horror humanum est" youtube interesting
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCOuIgj0CYCXCvjWywjDbauw "~YT Chat Sceptique" youtube interesting
    +
    +
    +
    +
    +
    + +
    +

    Science

    +
    +
    +
    https://www.youtube.com/feeds/videos.xml?channel_id=UCwgqYNmYaij2_8hq_tOFyZw "~YT Aurelien Barrau" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCeR8BYZS7IHYjk_9Mh5JgkA "~YT Scilabus" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC1Ue7TuX3iH4y8-Qrjj-hyg "~YT J'm'énerve pas, j'explique" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCjsHDXUU3BjBCG7OaCbNDyQ "~YT Le Sense Of Wonder" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC4PasDd25MXqlXBogBw9CAg "~YT Mickaël Launay" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCsz9DiwPtgDvxJ-njWnieZw "~YT Passe-Science" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC_GlthPB9gzdxfkTTEIVxMA "~YT Incroyables Expériences" youtube science engineering
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCxqAWLTk1CmBvZFPzeZMd9A "~YT Domain of Science" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCaNlbnghtwlsGF-KzAFThqA "~YT ScienceEtonnante" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCeQEKFH31vvD-InkTGSvCrA "~YT brusspup" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCHnyfMqiRRG1u-2MsSQLbXA "~YT Veritasium" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCH6ppHEvV3_WIXEwmhv9HEg "~YT Deus Ex Silicium" youtube engineering science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC2LZO6swZ9SLUEOks3WnsfA "~YT 2veritasium" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCvGag7MyHR8H9oRm9iL9Ifw "~YT Experimentboy" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC6107grRI4m0o2-emgoDnAA "~YT SmarterEveryDay" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCtqICqGbPSbTN09K1_7VZ3Q "~YT DirtyBiology" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC_ZChHhr5nDrUymz7qsRqRw "~YT Confér'ENS" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCNmLe68qKzdjuEpT_YTDFuA "~YT Etonnarium" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCCSN5zJTKjl6UKvPcLzLuiw "~YT Macroscopie" youtube science
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC7DdEm33SyaTDtWYGO2CwdA "~YT Physics Girl" youtube science
    +
    +
    +
    +
    +
    + +
    +

    Keyboard

    +
    +
    +
    https://www.youtube.com/feeds/videos.xml?channel_id=UC5ClFK9Ko4ACRgXjRZc_GfA "~YT Rhinofeed" youtube keyboards
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC2yitP8oH86YBRVU4anycoA "~YT Quentin Lebastard" youtube keyboards
    +
    +
    +
    +
    + +
    +

    Music

    +
    +
    +
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC3gZqwD45zGCsduBn-Q2lew "~YT Gabrielle Grau" youtube music
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCZHPwKyeypWwU8SNJSzQhCw "~YT Révisons nos Classiques" youtube music
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCPpNtkHeCnwN7Tl5oLq4AAg "~YT Une chanson, l'addition" youtube music
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC_17P1ruDpCVujf7C_SxhOA "~YT Metalliquoi" youtube music
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCzabZYC0MYRR2MFkq62d6yQ "~YT Florent Garcia" youtube music
    +
    +
    +
    +
    + +
    +

    Space

    +
    +
    +
    https://www.youtube.com/feeds/videos.xml?channel_id=UCdL3UpiseRlvxXuORJjmqZw "~YT Stardust" youtube space
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC5X4e8ScZI2AFd_vkjSoyoQ "~YT AstronoGeek" youtube space
    +
    +
    +
    +
    + +
    +

    Engineering

    +
    +
    +
    https://www.youtube.com/feeds/videos.xml?channel_id=UCotwjyJnb-4KW7bmsOoLfkg "~YT Art of the Problem" youtube engineering
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCR1IuLEqb6UEA_zQ81kwXfg "~YT Real Engineering" youtube engineering
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCfsznjef2zGJnrCRQBXqo6Q "~YT Machine Thinking" youtube engineering
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC2bkHVIDjXS7sgrgjFtzOXQ "~YT engineerguy" youtube engineering
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCivA7_KLKWo43tFcCkFvydw "~YT Applied Science" youtube science engineering
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCk0fGHsCEzGig-rSzkfCjMw "~YT The Engineering Mindset" youtube engineering
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC5_Y-BKzq1uW_2rexWkUzlA "~YT New Mind" youtube engineering
    +
    +
    +
    +
    +
    +

    Random - Fun - Others

    +
    +
    +
    https://www.youtube.com/feeds/videos.xml?channel_id=UCJM10Rp7G0h9j5S92QszJ5Q "~YT Tales From The Click" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCCMxHHciWRBBouzk-PGzmtQ "~YT Bazar du Grenier" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCTt2AnK--mnRmICnf-CCcrw "~YT Le Rire Jaune" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCJRljQ8OcyfzHBYpS_bDbow "~YT La Mezzanine" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCVTAmJvZOxuj9Kto8Ty9L8Q "~YT Rapha Gaming" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCTafEJoRl5myC8A50plIrng "~YT FabienOlicard" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCZeyUZmGAyRLDfM2ir3q-OQ "~YT Captain Popcorn" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCwzxu1j19ICnfW5zrBvUw-w "~YT Une bière et Jivay" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCPF7JOWMDWZmnP_cQfyAezg "~YT Scinéma" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCUK0HBIBWgM2c4vsPhkYY4w "~YT The Slow Mo Guys" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCxeA1l2E5AYrtpkqUbBEg3A "~YT Pierre Lecourt" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCYD22MFqaNqXp-ogTMosW_A "~YT Le Show Jaune" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC4HANn7TBY-xcION-eL3rLA "~YT Daniil le Russe" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCf0mOxfawezlHIVuHd3L2VA "~YT Didi Chandouidoui" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCw3tZ7g_FljNjzGprCuptpA "~YT Taupe10" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCfXXAQ-mp1uUcvSpvMcAAtw "~YT LinksTheSun" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCWeg2Pkate69NFdBeuRFTAw "~YT Squeezie" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCtI6_1vGanPlH5lgVIDjJGQ "~YT MrAntoineDaniel" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCm3C3OSgcyzaTBXrNRupB3Q "~YT Le Woop" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCuBzVunAVbcwzMfQaJVacuw "~YT LE ROI DES RATS" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCyWqModMQlbIo8274Wh_ZsQ "~YT Cyprien" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCAFQjCZo5okIPkHUQlBZM-g "~YT Bonjour Tristesse" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCoZoRz4-y6r87ptDp4Jk74g "~YT Palmashow" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCww2zZWg4Cf5xcRKG-ThmXQ "~YT NORMAN FAIT DES VIDÉOS" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCkEa1AfdeB93-he4VziKGFg "~YT JIGMÉ" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCND0gjuG9ltEWDvh82VJITg "~YT Jeannot Nymouce" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCP5tjEmvPItGyLhmjdwP7Ww "~YT RealLifeLore" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCwbV8cTR4yBgFdfa_BXV2OA "~YT Le Fossoyeur de Films" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCGgvKW19IWVvUUblrr8EgHA "~YT Experimentboy 2" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCJZ94qp4dtCw0Q5UQqAkg7w "~YT larsandersen23" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UCDPK_MTu3uTUFJXRVcTJcEw "~YT Mcfly et Carlito" youtube random
    +https://www.youtube.com/feeds/videos.xml?channel_id=UC2_OG1L8DLTzQ7UrZVOk7OA "~YT Axolot" youtube random
    +
    +
    +
    +
    +
    +

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:39

    diff --git a/docs/notifications.html b/docs/notifications.html index a048a87..9edec38 100644 --- a/docs/notifications.html +++ b/docs/notifications.html @@ -1,251 +1,19 @@ - - + - Dunst (Notification Manager) - -
    @@ -277,7 +45,7 @@ for the JavaScript code in this tag.

    Global

    -
    [global]
    +
    [global]
     
    @@ -285,1861 +53,112 @@ for the JavaScript code in this tag.

    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
     
    +

    Text

    -
    font = Hack Nerd Font 10
    +
    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
    +# 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
    +format = "<b>%s</b>\n%b"
     
    -# Show age of message if message is older than show_age_threshold
    -# seconds.
    -# Set to -1 to disable.
    -show_age_threshold = 300
    +# Alignment of message text.
    +# Possible values are "left", "center" and "right".
    +alignment = left
     
    -# Split notifications into multiple lines if they don't fit into
    -# geometry.
    -word_wrap = yes
    +# Show age of message if message is older than show_age_threshold
    +# seconds.
    +# Set to -1 to disable.
    +show_age_threshold = 300
     
    -# Ignore newlines '\n' in notifications.
    -ignore_newline = no
    +# Split notifications into multiple lines if they don't fit into
    +# geometry.
    +word_wrap = yes
     
    -# Merge multiple notifications with the same content
    -stack_duplicates = false
    +# Ignore newlines '\n' in notifications.
    +ignore_newline = no
     
    -# Hide the count of merged notifications with the same content
    -hide_duplicate_count = false
    +# Merge multiple notifications with the same content
    +stack_duplicates = false
     
    -# Display indicators for URLs (U) and actions (A).
    -show_indicators = yes
    +# 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
     
    @@ -2200,14 +218,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/
     
    @@ -2217,12 +235,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
     
    @@ -2232,25 +250,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 = qutebrowser
    +# 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
     
    @@ -2261,25 +279,11 @@ format = "<b>%s</b">"<b>%s</b>\n%b"

    Shortcuts

    -
    [shortcuts]
    -# Shortcuts are specified as [modifier+][modifier+]...key
    -# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
    -# "mod3" and "mod4" (windows-key).
    -
    -# Close notification.
    -close = mod1+space
    -
    -# Close all notifications.
    -# close_all = mod1+shift+space
    -
    -# Redisplay last message(s).
    -# On the US keyboard layout "grave" is normally above TAB and left
    -# of "1". Make sure this key actually exists on your keyboard layout,
    -# e.g. check output of 'xmodmap -pke'
    -history = mod1+grave
    -
    -# Context menu.
    -context = mod1+shift+period
    +
    [shortcuts]
    +# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
    +# "mod3" and "mod4" (windows-key).
    +close = mod1+space
    +history = mod1+Escape
     
    @@ -2289,20 +293,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
     
    @@ -2310,7 +314,7 @@ format = "<b>%s</b">"<b>%s</b>\n%b"

    Author: Dehaeze Thomas

    -

    Created: 2020-01-11 sam. 22:19

    +

    Created: 2020-05-26 mar. 08:40

    diff --git a/docs/polybar.html b/docs/polybar.html index 04e5215..a2b6b6d 100644 --- a/docs/polybar.html +++ b/docs/polybar.html @@ -1,229 +1,19 @@ - - + - Polybar Configuration - -
    @@ -263,6 +53,12 @@
  • Open Newsboat
  • +
  • Calendar + +
  • Redshift
  • +
  • Microphone loopback + +
  • Screenshot
  • Scripts
      @@ -316,23 +118,23 @@

      Colors

      -
      [colors]
      -bg = ${xrdb:background}
      -red = ${xrdb:color1}
      -green = ${xrdb:color2}
      -yellow = ${xrdb:color3}
      -blue = ${xrdb:color4}
      -purple = ${xrdb:color5}
      -aqua = ${xrdb:color6}
      -gray = ${colors.color7}
      -darkgray = ${colors.color8}
      -darkred = ${xrdb:color9}
      -darkgreen = ${xrdb:color10}
      -darkyellow = ${xrdb:color11}
      -darkblue = ${xrdb:color12}
      -darkpurple = ${xrdb:color13}
      -darkaqua = ${xrdb:color14}
      -fg = ${xrdb:foreground}
      +
      [colors]
      +bg = ${xrdb:background}
      +red = ${xrdb:color1}
      +green = ${xrdb:color2}
      +yellow = ${xrdb:color3}
      +blue = ${xrdb:color4}
      +purple = ${xrdb:color5}
      +aqua = ${xrdb:color6}
      +gray = ${colors.color7}
      +darkgray = ${colors.color8}
      +darkred = ${xrdb:color9}
      +darkgreen = ${xrdb:color10}
      +darkyellow = ${xrdb:color11}
      +darkblue = ${xrdb:color12}
      +darkpurple = ${xrdb:color13}
      +darkaqua = ${xrdb:color14}
      +fg = ${xrdb:foreground}
       
      @@ -342,9 +144,9 @@

      VM

      -
      [global/wm]
      -margin-top = 0
      -margin-bottom = 0
      +
      [global/wm]
      +margin-top = 0
      +margin-bottom = 0
       
      @@ -354,43 +156,43 @@

      Top Bar

      -
      [bar/top]
      -enable-ipc = true
      -override-redirect = false
      -bottom = false
      -fixed-center = false
      +
      [bar/top]
      +enable-ipc = true
      +override-redirect = false
      +bottom = false
      +fixed-center = false
       
      -width = 100%
      -height = 27
      -radius = 0.0
      +width = 100%
      +height = 27
      +radius = 0.0
       
      -background = ${colors.bg}
      -foreground = ${colors.fg}
      +background = ${colors.bg}
      +foreground = ${colors.fg}
       
      -line-size = 2
      +line-size = 2
       
      -border-size = 0
      +border-size = 0
       
      -padding-left = 2
      -padding-right = 12
      +padding-left = 2
      +padding-right = 12
       
      -module-margin-left = 1
      -module-margin-right = 1
      +module-margin-left = 1
      +module-margin-right = 1
       
      -font-0 = Hack Nerd Font:style=Medium,Regular:pixelsize=10;1
      -font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
      -font-2 = Weather Icons:size=10;1
      +font-0 = Hack Nerd Font:style=Medium,Regular:pixelsize=10;1
      +font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
      +font-2 = Weather Icons:size=10;1
       
      -modules-left = i3 bspwm xwindow
      -modules-center =
      -modules-right = pulseaudio xbacklight redshift wireguard nordvpn lockscreen dunst packages unread_news unread_mail temperature battery date
      +modules-left = i3 bspwm xwindow
      +modules-center =
      +modules-right = pulseaudio wired-network wireless-network wireguard nordvpn loopback redshift lockscreen dunst packages unread_news unread_mail calendar temperature battery date
       
      -wm-restack = i3
      +wm-restack = i3
       
      -tray-position = right
      -tray-detached = true
      -tray-padding = 0
      -tray-background = ${colors.bg}
      +tray-position = right
      +tray-detached = true
      +tray-padding = 0
      +tray-background = ${colors.bg}
       
      @@ -400,9 +202,9 @@

      Show Windows Title

      -
      [module/xwindow]
      -type = internal/xwindow
      -label = %title:0:30:...%
      +
      [module/xwindow]
      +type = internal/xwindow
      +label = %title:0:30:...%
       
      @@ -412,49 +214,49 @@

      I3 - Information about workspaces and active one

      -
      [module/i3]
      -type = internal/i3
      +
      [module/i3]
      +type = internal/i3
       
      -enable-scroll = false
      -wrapping-scroll = false
      +enable-scroll = false
      +wrapping-scroll = false
       
      -
      format = <label-state> <label-mode>
      -index-sort = true
      +
      format = <label-state> <label-mode>
      +index-sort = true
       
      -
      label-mode-foreground = ${colors.bg}
      -label-mode-background = ${colors.fg}
      -label-mode-padding = 1
      +
      label-mode-foreground = ${colors.bg}
      +label-mode-background = ${colors.fg}
      +label-mode-padding = 1
       
      -# focused = Active workspace on focused monitor
      -label-focused = %icon% %index%
      -label-focused-foreground = ${colors.fg}
      -label-focused-background = ${colors.bg}
      -label-focused-underline = ${colors.aqua}
      -label-focused-padding = 1
      +# focused = Active workspace on focused monitor
      +label-focused = %icon% %index%
      +label-focused-foreground = ${colors.fg}
      +label-focused-background = ${colors.bg}
      +label-focused-underline = ${colors.aqua}
      +label-focused-padding = 1
       
      -# unfocused = Inactive workspace on any monitor
      -label-unfocused = %icon% %index%
      -label-unfocused-foreground = ${colors.fg}
      -label-unfocused-background = ${colors.bg}
      -label-unfocused-underline = ${colors.bg}
      -label-unfocused-padding = 1
      +# unfocused = Inactive workspace on any monitor
      +label-unfocused = %icon% %index%
      +label-unfocused-foreground = ${colors.fg}
      +label-unfocused-background = ${colors.bg}
      +label-unfocused-underline = ${colors.bg}
      +label-unfocused-padding = 1
       
      -# visible = Active workspace on unfocused monitor
      -label-visible = %icon% %index%
      -label-visible-background = ${colors.bg}
      -label-visible-underline = ${colors.aqua}
      -label-visible-padding = 1
      +# visible = Active workspace on unfocused monitor
      +label-visible = %icon% %index%
      +label-visible-background = ${colors.bg}
      +label-visible-underline = ${colors.aqua}
      +label-visible-padding = 1
       
      -# urgent = Workspace with urgency hint set
      -label-urgent = %icon% %index%
      -label-urgent-background = ${colors.red}
      -label-urgent-padding = 1
      +# urgent = Workspace with urgency hint set
      +label-urgent = %icon% %index%
      +label-urgent-background = ${colors.red}
      +label-urgent-padding = 1
       
      @@ -464,44 +266,44 @@

      BSPWM

      -
      [module/bspwm]
      -type = internal/bspwm
      +
      [module/bspwm]
      +type = internal/bspwm
       
      -pin-workspaces = true
      -enable-click = true
      -enable-scroll = false
      +pin-workspaces = true
      +enable-click = true
      +enable-scroll = false
       
       ; Use fuzzy (partial) matching on labels when assigning
       ; icons to workspaces
      -; Example: code;♚ will apply the icon to all workspaces
      -; containing 'code' in the label
      -fuzzy-match = false
      +; Example: code;♚ will apply the icon to all workspaces
      +; containing 'code' in the label
      +fuzzy-match = false
       
       
      -ws-icon-0 = code;
      -ws-icon-1 = web;
      -ws-icon-2 = mail;
      -ws-icon-3 = misc;
      -ws-icon-4 = figs;ﬧ
      -ws-icon-default =
      +ws-icon-0 = code;
      +ws-icon-1 = web;
      +ws-icon-2 = mail;
      +ws-icon-3 = misc;
      +ws-icon-4 = figs;ﬧ
      +ws-icon-default =
       
      -label-focused = %icon%
      -label-focused-foreground = ${colors.bg}
      -label-focused-background = ${colors.aqua}
      -label-focused-underline= ${colors.aqua}
      -label-focused-padding = 1
      +label-focused = %icon%
      +label-focused-foreground = ${colors.bg}
      +label-focused-background = ${colors.aqua}
      +label-focused-underline= ${colors.aqua}
      +label-focused-padding = 1
       
      -label-occupied = %icon%
      -label-occupied-underline = ${colors.fg}
      -label-occupied-padding = 1
      +label-occupied = %icon%
      +label-occupied-underline = ${colors.fg}
      +label-occupied-padding = 1
       
      -label-urgent = %icon%
      -label-urgent-background = ${colors.red}
      -label-urgent-padding = 1
      +label-urgent = %icon%
      +label-urgent-background = ${colors.red}
      +label-urgent-padding = 1
       
      -label-empty = %icon%
      -label-empty-foreground = ${colors.fg}
      -label-empty-padding = 1
      +label-empty = %icon%
      +label-empty-foreground = ${colors.fg}
      +label-empty-padding = 1
       
      @@ -511,38 +313,38 @@

      Music using MPD

      -
      [module/mpd]
      -type = internal/mpd
      -format-online = <icon-prev> <toggle> <icon-next> %{A1:$TERMINAL -e "ncmpcpp" &:}<label-song>%{A}
      +
      [module/mpd]
      +type = internal/mpd
      +format-online = <icon-prev> <toggle> <icon-next> %{A1:$TERMINAL -e "ncmpcpp" &:}<label-song>%{A}
       
      -format-online-spacing = 0
      -format-online-padding = 0
      +format-online-spacing = 0
      +format-online-padding = 0
       
      -label-offline = mpd is offline
      -format-offline = <label-offline>
      -format-offline-foreground = #777
      +label-offline = mpd is offline
      +format-offline = <label-offline>
      +format-offline-foreground = #777
       
      -label-song = %artist% - %title%
      -label-song-maxlen = 30
      -label-song-ellipsis = true
      +label-song = %artist% - %title%
      +label-song-maxlen = 30
      +label-song-ellipsis = true
       
      -icon-prev = 寧
      -icon-stop = 栗
      -icon-play = 契
      -icon-pause = 
      -icon-next = 嶺
      -icon-random = 咽
      -icon-repeat = 凌
      +icon-prev = 寧
      +icon-stop = 栗
      +icon-play = 契
      +icon-pause = 
      +icon-next = 嶺
      +icon-random = 咽
      +icon-repeat = 凌
       
      -# Used to display the state of random/repeat/repeatone/single
      -# Only applies if <icon-[random|repeat|repeatone|single]> is used
      -toggle-on-foreground = ${colors.fg}
      -toggle-off-foreground = ${colors.gray}
      +# Used to display the state of random/repeat/repeatone/single
      +# Only applies if <icon-[random|repeat|repeatone|single]> is used
      +toggle-on-foreground = ${colors.fg}
      +toggle-off-foreground = ${colors.gray}
       
      -bar-progress-width = 15
      -bar-progress-indicator = |
      -bar-progress-fill = ─
      -bar-progress-empty = ─
      +bar-progress-width = 15
      +bar-progress-indicator = |
      +bar-progress-fill = ─
      +bar-progress-empty = ─
       
      @@ -552,22 +354,22 @@

      Backlight level

      -
      [module/xbacklight]
      -type = internal/xbacklight
      +
      [module/xbacklight]
      +type = internal/xbacklight
       
      -format = <ramp>
      -ramp-0 = 
      -ramp-1 = 
      -ramp-2 = 
      -ramp-3 = 
      -ramp-4 = 
      -ramp-5 = 
      -ramp-6 = 
      -ramp-7 = 
      -ramp-8 = 
      -ramp-9 = 
      -ramp-10 = 
      -ramp-11 = 
      +format = <ramp>
      +ramp-0 = 
      +ramp-1 = 
      +ramp-2 = 
      +ramp-3 = 
      +ramp-4 = 
      +ramp-5 = 
      +ramp-6 = 
      +ramp-7 = 
      +ramp-8 = 
      +ramp-9 = 
      +ramp-10 = 
      +ramp-11 = 
       
      @@ -577,14 +379,14 @@

      CPU Usage

      -
      [module/cpu]
      -type = internal/cpu
      -interval = 2
      +
      [module/cpu]
      +type = internal/cpu
      +interval = 2
       
      -format-prefix-foreground = ${colors.fg}
      -format-underline = ${colors.bg}
      +format-prefix-foreground = ${colors.fg}
      +format-underline = ${colors.bg}
       
      -label = %{A1:$TERMINAL -e "htop" &:}﬙ %percentage:2%%%{A}
      +label = %{A1:$TERMINAL -e "htop" &:}﬙ %percentage:2%%%{A}
       
      @@ -594,18 +396,18 @@

      Date

      -
      [module/date]
      -type = internal/date
      -interval = 1
      +
      [module/date]
      +type = internal/date
      +interval = 1
       
      -# Open google calendar on left right
      -date = %{A1:$TERMINAL -e "ikhal" &:} %d-%m%{A}
      -date-alt = "%{A1:$TERMINAL -e \"ikhal\" &:} %d-%m-%Y%{A}"
      +# Open google calendar on left right
      +date = %{A1:$TERMINAL -e "ikhal" &:} %d-%m%{A}
      +date-alt = "%{A1:$TERMINAL -e \"ikhal\" &:} %d-%m-%Y%{A}"
       
      -time =  %H:%M
      -time-alt =  %H:%M:%S
      +time =  %H:%M
      +time-alt =  %H:%M:%S
       
      -label = %date% %time%
      +label = %date% %time%
       
      @@ -615,35 +417,35 @@

      Sound Volume

      -
      [module/pulseaudio]
      -type = internal/pulseaudio
      +
      [module/pulseaudio]
      +type = internal/pulseaudio
       
      -sink = alsa_output.pci-0000_00_1f.3.analog-stereo
      +sink = alsa_output.pci-0000_00_1f.3.analog-stereo
       
      -# Open pavucontrol on left right
      -format-volume =%{A1:pavucontrol &:}<label-volume> <bar-volume>%{A}
      +# Open pavucontrol on left right
      +format-volume =%{A1:pavucontrol &:}<label-volume> <bar-volume>%{A}
       
      -label-volume = %percentage%%
      -label-volume-foreground = ${root.foreground}
      +label-volume = %percentage%%
      +label-volume-foreground = ${root.foreground}
       
      -label-muted = ﱝ muted
      +label-muted = ﱝ muted
       
      -bar-volume-width = 10
      -bar-volume-foreground-0 = ${colors.green}
      -bar-volume-foreground-1 = ${colors.green}
      -bar-volume-foreground-2 = ${colors.blue}
      -bar-volume-foreground-3 = ${colors.blue}
      -bar-volume-foreground-4 = ${colors.red}
      -bar-volume-foreground-5 = ${colors.red}
      -bar-volume-foreground-6 = ${colors.red}
      -bar-volume-gradient = false
      -bar-volume-indicator = |
      -bar-volume-indicator-font = 2
      -bar-volume-fill = ─
      -bar-volume-fill-font = 2
      -bar-volume-empty = ─
      -bar-volume-empty-font = 2
      -bar-volume-empty-foreground = ${colors.fg}
      +bar-volume-width = 10
      +bar-volume-foreground-0 = ${colors.green}
      +bar-volume-foreground-1 = ${colors.green}
      +bar-volume-foreground-2 = ${colors.blue}
      +bar-volume-foreground-3 = ${colors.blue}
      +bar-volume-foreground-4 = ${colors.red}
      +bar-volume-foreground-5 = ${colors.red}
      +bar-volume-foreground-6 = ${colors.red}
      +bar-volume-gradient = false
      +bar-volume-indicator = |
      +bar-volume-indicator-font = 2
      +bar-volume-fill = ─
      +bar-volume-fill-font = 2
      +bar-volume-empty = ─
      +bar-volume-empty-font = 2
      +bar-volume-empty-foreground = ${colors.fg}
       
      @@ -653,27 +455,27 @@

      Battery

      -
      [module/battery]
      -type = internal/battery
      +
      [module/battery]
      +type = internal/battery
       
      -battery = BAT0
      -adapter = AC
      -full-at = 95
      +battery = BAT0
      +adapter = AC
      +full-at = 95
       
      -format-charging = %{A1:xfce4-power-manager-settings &:}<ramp-capacity>  <label-charging>%{A}
      -format-charging-underline = ${colors.blue}
      +format-charging = %{A1:xfce4-power-manager-settings &:}<ramp-capacity>  <label-charging>%{A}
      +format-charging-underline = ${colors.blue}
       
      -format-discharging = %{A1:xfce4-power-manager-settings &:}<ramp-capacity>  <label-discharging>%{A}
      -format-discharging-underline = ${colors.red}
      +format-discharging = %{A1:xfce4-power-manager-settings &:}<ramp-capacity>  <label-discharging>%{A}
      +format-discharging-underline = ${colors.red}
       
      -label-full = %{A1:xfce4-power-manager-settings &:} %{A}
      -format-full-underline = ${colors.bg}
      +label-full = %{A1:xfce4-power-manager-settings &:} %{A}
      +format-full-underline = ${colors.bg}
       
      -ramp-capacity-0 = 
      -ramp-capacity-1 = 
      -ramp-capacity-2 = 
      -ramp-capacity-3 = 
      -ramp-capacity-4 = 
      +ramp-capacity-0 = 
      +ramp-capacity-1 = 
      +ramp-capacity-2 = 
      +ramp-capacity-3 = 
      +ramp-capacity-4 = 
       
      @@ -683,25 +485,25 @@

      Temperature

      -
      [module/temperature]
      -type = internal/temperature
      -interval = 2
      -thermal-zone = 0
      -warn-temperature = 70
      -hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
      -units = false
      -format = %{A1:$TERMINAL --class="Floating" -e "watch sensors" &:}<ramp> <label>%{A}
      -format-warn = <ramp> <label-warn>
      -label = %temperature-c%°C
      -label-warn = %temperature-c%°C
      -label-warn-foreground = ${colors.fg}
      -format-warn-underline = ${colors.red}
      -ramp-0 = 
      -ramp-1 = 
      -ramp-2 = 
      -ramp-3 = 
      -ramp-4 = 
      -ramp-foreground = ${colors.fg}
      +
      [module/temperature]
      +type = internal/temperature
      +interval = 2
      +thermal-zone = 0
      +warn-temperature = 70
      +hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
      +units = false
      +format = %{A1:$TERMINAL --class="Floating" -e "watch sensors" &:}<ramp> <label>%{A}
      +format-warn = <ramp> <label-warn>
      +label = %temperature-c%°C
      +label-warn = %temperature-c%°C
      +label-warn-foreground = ${colors.fg}
      +format-warn-underline = ${colors.red}
      +ramp-0 = 
      +ramp-1 = 
      +ramp-2 = 
      +ramp-3 = 
      +ramp-4 = 
      +ramp-foreground = ${colors.fg}
       
      @@ -711,15 +513,15 @@

      Unread Mails

      -
      [module/unread_mail]
      -type = custom/script
      +
      [module/unread_mail]
      +type = custom/script
       
      -format-underline = ${colors.bg}
      -click-left = ~/.config/polybar/scripts/mail-open.sh
      -click-right = ~/.config/polybar/scripts/mail-refresh.sh
      -format = <label>
      -exec = ~/.config/polybar/scripts/mail-status.sh
      -interval = 2
      +format-underline = ${colors.bg}
      +click-left = ~/.config/polybar/scripts/mail-open.sh >/dev/null 2>%1 &
      +click-right = ~/.config/polybar/scripts/mail-refresh.sh >/dev/null 2>%1 &
      +format = <label>
      +exec = ~/.config/polybar/scripts/mail-status.sh
      +interval = 2
       
      @@ -728,13 +530,13 @@

      Unread Mail Scripts

      -
      mail_nb=`du -a ~/.mail/*/Inbox/new/* 2>/dev/null | wc -l`
      +
      mail_nb=`du -a ~/.mail/*/Inbox/new/* 2>/dev/null | wc -l`
       
      -if [ "$mail_nb" -eq "0" ]; then
      -  echo "";
      -else
      -  echo "%{F#859900} $mail_nb%{F-}";
      -fi
      +if [ "$mail_nb" -eq "0" ]; then
      +  echo "";
      +else
      +  echo "%{F#859900} $mail_nb%{F-}";
      +fi
       
      @@ -744,12 +546,12 @@

      Refresh Mail Scripts

      -
      dunstify --replace=98465 "Mails " "Syncing...";
      -~/scripts/checkmail.sh -q && \
      -    mail_nb=`du -a ~/.mail/*/Inbox/new/* 2>/dev/null | wc -l` && \
      -    if [ "$mail_nb" -eq "0" ]; then
      -        dunstify --replace=98465 "Mails " "No new mail";
      -    fi
      +
      dunstify --replace=98465 "Mails " "Syncing...";
      +checkmail -q && \
      +    mail_nb=`du -a ~/.mail/*/Inbox/new/* 2>/dev/null | wc -l` && \
      +    if [ "$mail_nb" -eq "0" ]; then
      +        dunstify --replace=98465 "Mails " "No new mail";
      +    fi
       
      @@ -759,7 +561,7 @@

      Open Mails

      -
      $TERMINAL -e "tmux new-session -A -s neomutt neomutt" &
      +
      $TERMINAL -e "tmux new-session -A -s neomutt neomutt"
       
      @@ -770,15 +572,15 @@

      Unread News

      -
      [module/unread_news]
      -type = custom/script
      +
      [module/unread_news]
      +type = custom/script
       
      -format-underline = ${colors.bg}
      -click-left = ~/.config/polybar/scripts/news-open.sh
      -click-right = ~/.config/polybar/scripts/news-refresh.sh &
      -format = <label>
      -exec = ~/.config/polybar/scripts/news-status.sh
      -interval = 60
      +format-underline = ${colors.bg}
      +click-left = ~/.config/polybar/scripts/news-open.sh >/dev/null 2>%1 &
      +click-right = ~/.config/polybar/scripts/news-refresh.sh >/dev/null 2>%1 &
      +format = <label>
      +exec = ~/.config/polybar/scripts/news-status.sh
      +interval = 60
       
      @@ -787,13 +589,13 @@

      Unread News Scripts

      -
       news_nb=`newsboat -x print-unread 2>/dev/null | cut -d " " -f1`
      +
       news_nb=`newsboat -x print-unread 2>/dev/null | cut -d " " -f1`
       
      -if [ -z "$news_nb" ] || [ "$news_nb" -eq "0" ]; then
      -   echo "";
      - else
      -   echo "%{F#859900}  $news_nb%{F-}";
      - fi
      +if [ -z "$news_nb" ] || [ "$news_nb" -eq "0" ]; then
      +   echo "";
      + else
      +   echo "%{F#859900}  $news_nb%{F-}";
      + fi
       
      @@ -803,16 +605,16 @@

      Refresh News Scripts

      -
      dunstify --replace=38492 "Newsboat " "Reloading...";
      +
      dunstify --replace=38492 "Newsboat " "Reloading...";
       
      -if pgrep -x "newsboat" >/dev/null; then
      -  # If newsboat is already running, try to refresh in the tmux session
      +if pgrep -x "newsboat" >/dev/null; then
      +  # If newsboat is already running, try to refresh in the tmux session
         tmux send-keys -t newsboat R
      -else
      +else
         newsboat -x reload && /
      -      news_nb=`newsboat -x print-unread | cut -d " " -f1` && \
      -      dunstify --replace=38492 "Newsboat " "$news_nb Unread News";
      -fi
      +      news_nb=`newsboat -x print-unread | cut -d " " -f1` && \
      +      dunstify --replace=38492 "Newsboat " "$news_nb Unread News";
      +fi
       
      @@ -822,7 +624,66 @@

      Open Newsboat

      -
      $TERMINAL -e "tmux new-session -A -s newsboat newsboat" &
      +
      $TERMINAL -e "tmux new-session -A -s newsboat newsboat"
      +
      +
      +
      +
  • +
    + +
    +

    Calendar

    +
    +
    +
    [module/calendar]
    +type = custom/script
    +
    +format-underline = ${colors.bg}
    +click-left = ~/.config/polybar/scripts/calendar-open.sh >/dev/null 2>%1 &
    +format = <label>
    +exec = ~/.config/polybar/scripts/calendar-status.sh
    +interval = 5
    +
    +
    +
    + +
    +

    Calendar Status Scripts

    +
    +
    +
    next_events=$(khal list "$(date +"%H:%M")" 23:59 --format "{start-time} - {title}" -df 'SKIPME' | grep -v 'SKIPME' | grep -v 'No events')
    +
    +cal_icon=""
    +cal_nb=""
    +cal_desc=""
    +
    +if [ -n "$next_events" ]; then
    +    events_number="$(echo "$next_events" | wc -l)"
    +
    +    if [ "$events_number" -gt "1" ]; then
    +        cal_nb=" ($events_number)"
    +    fi
    +
    +    next_timed_events=$(echo "$next_events" | sed -e '/^[^0-9]/d')
    +    if [ -z "$next_timed_events" ]; then
    +        # Only full day events
    +        cal_desc=" $(echo "$next_events" | sed -e '/^[0-9]/d;s/^ - //' | head -n 1 | cut -c 1-15)"
    +    else
    +        cal_desc=" $(echo "$next_timed_events" | head -n 1 | cut -c 1-20)"
    +    fi
    +fi
    +
    +echo "${cal_icon}${cal_nb}${cal_desc}"
    +
    +
    +
    +
    + +
    +

    Open Calendar

    +
    +
    +
    $TERMINAL --class="Floating" -e "khal interactive"
     
    @@ -833,14 +694,14 @@

    Redshift

    -
    [module/redshift]
    -type = custom/script
    +
    [module/redshift]
    +type = custom/script
     
    -format-underline = ${colors.bg}
    -click-left = ~/.config/polybar/scripts/redshift-toggle.sh
    -format = <label>
    -exec = ~/.config/polybar/scripts/redshift-status.sh
    -interval = 2
    +format-underline = ${colors.bg}
    +click-left = ~/.config/polybar/scripts/redshift-toggle.sh >/dev/null 2>%1 &
    +format = <label>
    +exec = ~/.config/polybar/scripts/redshift-status.sh
    +interval = 2
     
    @@ -849,11 +710,11 @@

    Redshift - Status

    -
    if pgrep -x "redshift" >/dev/null; then
    -    echo "望";
    -else
    -    echo "盛";
    -fi
    +
    if pgrep -x "redshift" >/dev/null; then
    +    echo "望";
    +else
    +    echo "盛";
    +fi
     
    @@ -863,13 +724,13 @@

    Toggle Redshift

    -
    if pgrep -x "redshift" >/dev/null; then
    -    killall redshift && \
    -    dunstify --replace=36492 "Redshift 望" "Turned off";
    -else
    -    nohup redshift > /dev/null 2>&1 &
    -    dunstify --replace=36492 "Redshift 望" "Starting...";
    -fi
    +
    if pgrep -x "redshift" >/dev/null; then
    +    killall redshift && \
    +        dunstify --replace=36492 "Redshift 望" "Turned off";
    +else
    +    nohup redshift > /dev/null 2>&1 &
    +    dunstify --replace=36492 "Redshift 望" "Starting...";
    +fi
     
    @@ -880,14 +741,14 @@

    NordVPN

    -
    [module/nordvpn]
    -type = custom/script
    +
    [module/nordvpn]
    +type = custom/script
     
    -format-underline = ${colors.bg}
    -click-left = ~/.config/polybar/scripts/nordvpn-toggle.sh
    -format = <label>
    -exec = ~/.config/polybar/scripts/nordvpn-status.sh
    -interval = 2
    +format-underline = ${colors.bg}
    +click-left = ~/.config/polybar/scripts/nordvpn-toggle.sh >/dev/null 2>%1 &
    +format = <label>
    +exec = ~/.config/polybar/scripts/nordvpn-status.sh
    +interval = 2
     
    @@ -896,13 +757,13 @@

    Nordvpn Status script

    -
    tmpfile="/tmp/vpnstatus";
    +
    tmpfile="/tmp/vpnstatus";
     
    -if [ -f $tmpfile ] && grep -q "on" $tmpfile; then
    -  echo "%{F#859900}%{F-}";
    -else
    -  echo "";
    -fi
    +if [ -f $tmpfile ] && grep -q "on" $tmpfile; then
    +  echo "%{F#859900}%{F-}";
    +else
    +  echo "";
    +fi
     
    @@ -912,19 +773,19 @@

    Nordvpn Toggle

    -
    tmpfile="/tmp/vpnstatus";
    +
    tmpfile="/tmp/vpnstatus";
     
    -if [ -f $tmpfile ] && grep -q "on" $tmpfile; then
    -  nordvpn disconnect && \
    -      dunstify --replace=23198 "VPN" "Disconnected" && \
    -      echo "off" > $tmpfile;
    -else
    -  country=`cat ~/bin/nordvpn_countries.txt | sed 's/\s*\t\s*/ /g ; s/\s/\n/g ; s/_/ /g ; /^[a-zA-Z]/!d ; s/\(.*\)/\L\1/' | rofi -i -dmenu | sed 's/\s/_/g'`;
    -  dunstify --replace=23198 "VPN" "Connecting to $country...";
    -  nordvpn connect $country && \
    -      dunstify --replace=23198 "VPN" "Connected to $country" && \
    -      echo "on" > $tmpfile;
    -fi
    +if [ -f $tmpfile ] && grep -q "on" $tmpfile; then
    +  nordvpn disconnect && \
    +      dunstify --replace=23198 "VPN" "Disconnected" && \
    +      echo "off" > $tmpfile;
    +else
    +  country=`cat ~/.local/data/nordvpn_countries.txt | sed 's/\s*\t\s*/ /g ; s/\s/\n/g ; s/_/ /g ; /^[a-zA-Z]/!d ; s/\(.*\)/\L\1/' | rofi -i -dmenu | sed 's/\s/_/g'`;
    +  dunstify --replace=23198 "VPN" "Connecting to $country...";
    +  nordvpn connect $country && \
    +      dunstify --replace=23198 "VPN" "Connected to $country" && \
    +      echo "on" > $tmpfile;
    +fi
     
    @@ -935,15 +796,15 @@

    Packages

    -
    [module/packages]
    -type = custom/script
    +
    [module/packages]
    +type = custom/script
     
    -format-underline = ${colors.bg}
    -click-left = ~/.config/polybar/scripts/packages-update.sh
    -click-right = ~/.config/polybar/scripts/packages-refresh.sh
    -format = <label>
    -exec = ~/.config/polybar/scripts/packages-status.sh
    -interval = 600
    +format-underline = ${colors.bg}
    +click-left = ~/.config/polybar/scripts/packages-update.sh >/dev/null 2>%1 &
    +click-right = ~/.config/polybar/scripts/packages-refresh.sh >/dev/null 2>%1 &
    +format = <label>
    +exec = ~/.config/polybar/scripts/packages-status.sh
    +interval = 600
     
    @@ -952,14 +813,16 @@

    Packages Status script

    -
    yay -Sy > /dev/null 2>&1 && \
    -package_nb=`yay -Qu 2> /dev/null | wc -l`;
    +
    yay -Sy > /dev/null 2>&1 && \
    +    package_nb=`yay -Qu 2> /dev/null | wc -l` || \
    +    package_nb=0
     
    -if [ "$package_nb" -eq "0" ]; then
    -  echo "";
    -else
    -  echo "%{F#859900} $package_nb%{F-}";
    -fi
    +
    +if [ "$package_nb" -eq "0" ]; then
    +    echo "";
    +else
    +    echo "%{F#859900} $package_nb%{F-}";
    +fi
     
    @@ -969,16 +832,16 @@

    Refresh New Packages script

    -
    dunstify --replace=64654 'Packages ' "Refreshing..."
    +
    dunstify --replace=64654 'Packages ' "Refreshing..."
     
    -yay -Sy > /dev/null 2>&1 && \
    -    package_nb=`yay -Qu 2> /dev/null | wc -l`;
    +yay -Sy > /dev/null 2>&1 && \
    +    package_nb=`yay -Qu 2> /dev/null | wc -l`;
     
    -if [ "$package_nb" -eq "0" ]; then
    -  dunstify --replace=64654 'Packages ' "No upgrade available"
    -else
    -  dunstify --replace=64654 'Packages ' "$(package_nb) upgrade(s) available"
    -fi
    +if [ "$package_nb" -eq "0" ]; then
    +  dunstify --replace=64654 'Packages ' "No upgrade available"
    +else
    +  dunstify --replace=64654 'Packages ' "$(package_nb) upgrade(s) available"
    +fi
     
    @@ -988,7 +851,7 @@ yay -Sy > /dev/null 2>&a

    Packages Update

    -
    $TERMINAL -e "yay" &
    +
    $TERMINAL -e "yay"
     
    @@ -999,14 +862,14 @@ yay -Sy > /dev/null 2>&a

    Dunst

    -
    [module/dunst]
    -type = custom/script
    +
    [module/dunst]
    +type = custom/script
     
    -format-underline = ${colors.bg}
    -click-left = ~/.config/polybar/scripts/dunst-toggle.sh
    -format = <label>
    -exec = ~/.config/polybar/scripts/dunst-status.sh
    -interval = 2
    +format-underline = ${colors.bg}
    +click-left = ~/.config/polybar/scripts/dunst-toggle.sh >/dev/null 2>%1 &
    +format = <label>
    +exec = ~/.config/polybar/scripts/dunst-status.sh
    +interval = 2
     
    @@ -1015,17 +878,17 @@ yay -Sy > /dev/null 2>&a

    Dunst Status script

    -
    tmpfile="/tmp/dunststatus";
    +
    tmpfile="/tmp/dunststatus";
     
    -if [ -f $tmpfile ]; then
    -  if grep -q "on" $tmpfile; then
    -    echo "";
    -  elif grep -q "off" $tmpfile; then
    -    echo "";
    -  fi
    -else
    -  echo "";
    -fi
    +if [ -f $tmpfile ]; then
    +  if grep -q "on" $tmpfile; then
    +    echo "";
    +  elif grep -q "off" $tmpfile; then
    +    echo "";
    +  fi
    +else
    +  echo "";
    +fi
     
    @@ -1035,18 +898,18 @@ yay -Sy > /dev/null 2>&a

    Dunst Toggle

    -
    tmpfile="/tmp/dunststatus";
    +
    tmpfile="/tmp/dunststatus";
     
    -if [ -f $tmpfile ] && grep -q "off" $tmpfile ; then
    -    killall -SIGUSR2 dunst && \
    -        echo "on" > $tmpfile;
    -    dunstify --replace=16549 "Notifications " "Activated";
    -else
    -    dunstify --replace=16549 "Notifications " "Deactivated";
    -    sleep 1 && \
    -        killall -SIGUSR1 dunst && \
    -        echo "off" > $tmpfile;
    -fi
    +if [ -f $tmpfile ] && grep -q "off" $tmpfile ; then
    +    killall -SIGUSR2 dunst && \
    +        echo "on" > $tmpfile;
    +    dunstify --replace=16549 "Notifications " "Activated";
    +else
    +    dunstify --replace=16549 "Notifications " "Deactivated";
    +    sleep 1 && \
    +        killall -SIGUSR1 dunst && \
    +        echo "off" > $tmpfile;
    +fi
     
    @@ -1057,16 +920,16 @@ yay -Sy > /dev/null 2>&a

    Lock Screen

    -
    [module/lockscreen]
    -type = custom/script
    +
    [module/lockscreen]
    +type = custom/script
     
    -format-underline = ${colors.bg}
    -click-left = ~/.config/polybar/scripts/lockscreen-toggle.sh
    -click-right = ~/scripts/lockscreen.sh
    -format = <label>
    -exec = ~/.config/polybar/scripts/lockscreen-status.sh
    +format-underline = ${colors.bg}
    +click-left = ~/.config/polybar/scripts/lockscreen-toggle.sh >/dev/null 2>%1 &
    +click-right = ~/.local/bin/lockscreen >/dev/null 2>%1 &
    +format = <label>
    +exec = ~/.config/polybar/scripts/lockscreen-status.sh
     
    -interval = 2
    +interval = 2
     
    @@ -1075,12 +938,12 @@ yay -Sy > /dev/null 2>&a

    Lock screen Status script

    -
    if pgrep -x "xautolock" >/dev/null
    -then
    -    echo "";
    -else
    -    echo "";
    -fi
    +
    if pgrep -x "xautolock" >/dev/null
    +then
    +    echo "";
    +else
    +    echo "";
    +fi
     
    @@ -1090,13 +953,13 @@ yay -Sy > /dev/null 2>&a

    Toggle Automatic Lock Screen

    -
    if pgrep -x "xautolock" >/dev/null ; then
    -    pkill xautolock && \
    -        dunstify --replace=13602 'Lock Screen ' 'Desactivated'
    -else
    -    xautolock -locker "~/scripts/lockscreen.sh" -detectsleep -time 30 -notify 60 -notifier "dunstify --replace=31846 -u critical -t 10000 -- 'Locking Screen' '60 seconds'" &
    -    dunstify --replace=13602 'Lock Screen ' 'Activated'
    -fi
    +
    if pgrep -x "xautolock" >/dev/null ; then
    +    pkill xautolock && \
    +        dunstify --replace=13602 'Lock Screen ' 'Desactivated'
    +else
    +    xautolock -locker "~/.local/bin/lockscreen" -detectsleep -time 30 -notify 60 -notifier "dunstify --replace=31846 -u critical -t 10000 -- 'Locking Screen' '60 seconds'" &
    +    dunstify --replace=13602 'Lock Screen ' 'Activated'
    +fi
     
    @@ -1107,35 +970,31 @@ yay -Sy > /dev/null 2>&a

    Network

    -
    [module/wired-network]
    -type = internal/network
    -interface = enp0s20f0u9u4
    +
    [module/wired-network]
    +type = internal/network
    +interface = enp0s20f0u6u4
     
    -label-connected = %local_ip%
    -label-connected-foreground = ${color.fg}
    +label-connected =  %local_ip%
    +label-connected-foreground = ${colors.fg}
     
    -format-connected-prefix = " "
    -format-connected = <label-connected>
    +label-disconnected = 
    +label-disconnected-foreground = #777
    +
    +
    -label-disconnected = "" -label-disconnected-foreground = ${colors.gray} +
    +
    [module/wireless-network]
    +type = internal/network
    +interface = wlp2s0
     
    -format-disconnected = <label-disconnected>
    +format-connected = <label-connected>
    +format-disconnected = <label-disconnected>
     
    -[module/wireless-network]
    -type = internal/network
    -interface = wlp2s0
    +label-connected = 直 %essid%
    +label-connected-foreground = ${colors.fg}
     
    -label-connected = %essid%
    -label-connected-foreground = ${color.fg}
    -
    -format-connected-prefix = " "
    -format-connected = <label-connected>
    -
    -label-disconnected = ""
    -label-disconnected-foreground = ${colors.gray}
    -
    -format-disconnected = <label-disconnected>
    +label-disconnected = 睊
    +label-disconnected-foreground = #777
     
    @@ -1145,15 +1004,15 @@ yay -Sy > /dev/null 2>&a

    Wireguard

    -
    [module/wireguard]
    -type = custom/script
    +
    [module/wireguard]
    +type = custom/script
     
    -format-underline = ${colors.bg}
    -click-left = ~/.config/polybar/scripts/wireguard-toggle.sh
    -format = <label>
    -exec = ~/.config/polybar/scripts/wireguard-status.sh
    +format-underline = ${colors.bg}
    +click-left = ~/.config/polybar/scripts/wireguard-toggle.sh >/dev/null 2>%1 &
    +format = <label>
    +exec = ~/.config/polybar/scripts/wireguard-status.sh
     
    -interval = 2
    +interval = 2
     
    @@ -1162,15 +1021,15 @@ yay -Sy > /dev/null 2>&a

    Wireguard Connection Status

    -
    config="pivpn"
    +
    config="pivpn"
     
    -connection=$(sudo wg show "$config" 2>/dev/null | head -n 1 | awk '{print $NF }')
    +connection=$(sudo wg show "$config" 2>/dev/null | head -n 1 | awk '{print $NF }')
     
    -if [ "$connection" = "$config" ]; then
    -    echo "%{F#859900}%{F-}"
    -else
    -    echo ""
    -fi
    +if [ "$connection" = "$config" ]; then
    +    echo "%{F#859900}%{F-}"
    +else
    +    echo ""
    +fi
     
    @@ -1180,31 +1039,84 @@ yay -Sy > /dev/null 2>&a

    Toggle Wireguard Connection

    -
    config="pivpn"
    +
    config="pivpn"
     
    -connection=$(sudo wg show "$config" 2>/dev/null | head -n 1 | awk '{print $NF }')
    +connection=$(sudo wg show "$config" 2>/dev/null | head -n 1 | awk '{print $NF }')
     
    -if [ "$connection" = "$config" ]; then
    -    sudo wg-quick down "$config" && \
    -        dunstify --replace=83244 "Wireguard" "Disconnected from $config"
    -else
    -    sudo wg-quick up "$config" && \
    -        dunstify --replace=83244 "Wireguard" "Connected to $config"
    -fi
    +if [ "$connection" = "$config" ]; then
    +    sudo wg-quick down "$config" && \
    +        dunstify --replace=83244 "Wireguard" "Disconnected from $config"
    +else
    +    sudo wg-quick up "$config" && \
    +        dunstify --replace=83244 "Wireguard" "Connected to $config"
    +fi
     
    +
    +

    Microphone loopback

    +
    +
    +
    [module/loopback]
    +type = custom/script
    +
    +format-underline = ${colors.bg}
    +click-left = ~/.config/polybar/scripts/loopback-toggle.sh >/dev/null 2>%1 &
    +format = <label>
    +exec = ~/.config/polybar/scripts/loopback-status.sh
    +
    +interval = 2
    +
    +
    +
    + +
    +

    Loopback Status

    +
    +
    +
    loopback=$(pactl list 2>/dev/null | grep module-loopback | wc -l)
    +
    +if [ "$loopback" -eq "0" ]; then
    +    echo ""
    +else
    +    echo "%{F#859900}%{F-}"
    +fi
    +
    +
    +
    +
    + +
    +

    Toggle Loopback

    +
    +
    +
    loopback=$(pactl list 2>/dev/null | grep module-loopback | wc -l)
    +
    +if [ "$loopback" -eq "0" ]; then
    +    pactl load-module module-loopback latency_msec=1 && \
    +        dunstify --replace=82244 "Loopback" "Enabled"
    +else
    +    pactl unload-module module-loopback && \
    +        dunstify --replace=82244 "Loopback" "Disabled"
    +fi
    +
    +
    +
    +
    +
    + +

    Screenshot

    -
    [module/screenshot]
    -type = custom/text
    -content = ""
    -click-left = ~/bin/screenshot
    +
    [module/screenshot]
    +type = custom/text
    +content = ""
    +click-left = ~/.local/bin/screenshot >/dev/null 2>%1 &
     
    @@ -1218,17 +1130,17 @@ yay -Sy > /dev/null 2>&a

    Launch

    -
    # Terminate already running bar instances
    +
    # Terminate already running bar instances
     killall -q polybar
     
    -# Wait until the processes have been shut down
    -while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
    +# Wait until the processes have been shut down
    +while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
     
    -# Launch Polybar, using default config location ~/.config/polybar/config
    -polybar top >>/tmp/polybar.log 2>&1 &
    -# polybar bottom &
    +# Launch Polybar, using default config location ~/.config/polybar/config
    +polybar top >>/tmp/polybar.log 2>&1 &
    +# polybar bottom &
     
    -echo "Polybar launched..."
    +echo "Polybar launched..."
     
    @@ -1238,13 +1150,13 @@ polybar top >>/tmp/polybar.log

    Toggle

    -
    # Usage : toggle.sh top
    +
    # Usage : toggle.sh top
     
    -pid=$(pgrep -f "polybar $1")
    +pid=$(pgrep -f "polybar $1")
     
    -if [ ! -z "$pid" ]; then
    -    polybar-msg -p $pid cmd toggle >/dev/null 2>&1
    -fi
    +if [ ! -z "$pid" ]; then
    +    polybar-msg -p $pid cmd toggle >/dev/null 2>&1
    +fi
     
    @@ -1253,7 +1165,7 @@ polybar top >>/tmp/polybar.log

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:40

    diff --git a/docs/qutebrowser.html b/docs/qutebrowser.html index 488927e..da23bda 100644 --- a/docs/qutebrowser.html +++ b/docs/qutebrowser.html @@ -1,229 +1,19 @@ - - + - Qutebrowser Configuration - -
    @@ -253,11 +43,13 @@
  • Userscripts
  • @@ -268,10 +60,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
     
    @@ -281,10 +73,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']
     
    @@ -294,14 +86,14 @@

    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.media_capture = 'ask'
    -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.media_capture = 'ask'
    +c.content.pdfjs = False
    +c.content.proxy = 'system'
     
    @@ -311,7 +103,7 @@

    Editor

    -
    c.editor.command = ['/usr/bin/termite', '--class="Floating"', '-e', 'nvim {}']
    +
    c.editor.command = ['/usr/bin/termite', '--class="Floating"', '-e', 'nvim {}']
     
    @@ -321,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
     
    @@ -336,10 +128,10 @@

    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.tabs = '10pt monospace'
    +
    c.fonts.default_family = ["Hack Nerd Font Mono", "DejaVu Sans Mono", "Monaco"]
    +c.fonts.prompts = '10pt monospace'
    +c.fonts.statusbar = '10pt monospace'
    +c.fonts.tabs = '10pt monospace'
     
    @@ -349,10 +141,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
     
    @@ -362,8 +154,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'
     
    @@ -373,7 +165,7 @@ c.input.insert_mode.plugins = Spell Check
    -
    c.spellcheck.languages = ['en-US', 'fr-FR']
    +
    c.spellcheck.languages = ['en-US', 'fr-FR']
     
    @@ -383,20 +175,20 @@ c.input.insert_mode.plugins = Status Bar
    -
    # Hide the statusbar unless a message is shown.
    -c.statusbar.hide = False
    -c.statusbar.position = 'bottom'
    +
    # Hide the statusbar unless a message is shown.
    +c.statusbar.hide = False
    +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']
     
    @@ -406,45 +198,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
     
    @@ -454,27 +246,30 @@ 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://188.240.208.184/search.php?req={}',
    -    'la': 'http://188.240.208.184/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=',
    +
    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 = ['qute://bookmarks']
    +
    c.url.start_pages = ['qute://bookmarks']
     
    @@ -487,9 +282,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')
     
    @@ -497,8 +292,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')
     
    @@ -506,7 +301,7 @@ config.bind('gi', 'hint Opening New Window

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

    -
    config.bind('H', 'back')
    -config.bind('L', 'forward')
    +
    config.bind('H', 'back')
    +config.bind('L', 'forward')
     
    @@ -523,12 +318,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')
     
    @@ -536,8 +331,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')
     
    @@ -545,8 +340,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')
     
    @@ -554,8 +349,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}')
     
    @@ -563,8 +358,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')
     
    @@ -572,7 +367,7 @@ config.bind('F', 'hint Yanking url

    -
    config.bind('yy', 'yank')
    +
    config.bind('yy', 'yank')
     
    @@ -580,13 +375,13 @@ Yanking url Go to specific websites

    -
    config.bind('gy', 'open -t https://www.youtube.com/feed/subscriptions')
    -config.bind('gf', 'open -t https://feedly.com/i/my')
    -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://feedly.com/i/my')
    +config.bind('gr', 'open -t https://www.reddit.com/')
     
    -config.bind('gb', 'open qute://bookmarks')
    -config.bind('gh', 'open qute://history')
    -config.bind('gs', 'open qute://settings')
    +config.bind('gb', 'open qute://bookmarks')
    +config.bind('gh', 'open qute://history')
    +config.bind('gs', 'open qute://settings')
     
    @@ -599,7 +394,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')
     
    @@ -607,7 +402,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')
     
    @@ -615,17 +410,17 @@ 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}')
     

    -Cast Youtube to Chromecast +Download Youtube video / entire playlist

    -
    config.bind(',c', 'spawn --userscript ~/.config/qutebrowser/userscripts/cast.sh {url}')
    -config.bind(',C', 'hint links spawn --userscript ~/.config/qutebrowser/userscripts/cast.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}')
     
    @@ -633,8 +428,16 @@ config.bind(',C', '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')
    +
    +
    + +

    +Download with aria2c +

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

    -
    config.bind(',o', 'spawn ~/bin/bukurun')
    +
    config.bind(',o', 'spawn ~/.local/bin/bukurun')
     
    @@ -650,8 +453,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')
     
    @@ -659,7 +462,7 @@ config.bind(',R', 'hint Download a torrent

    -
    config.bind(',t', 'hint links spawn --userscript ~/scripts/torrent-add.sh {hint-url}')
    +
    config.bind(',t', 'hint links spawn torrent-add {hint-url}')
     
    @@ -667,7 +470,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)})();")
     
    @@ -675,7 +478,15 @@ 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}")
    +
    +
    + +

    +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))")
     
    @@ -685,60 +496,77 @@ See Amazon price history using CamelCamelCamel

    Userscripts

    +

    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 "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
     
    -
    -

    Cast Youtube to Chromecast

    -
    +
    +

    Download Youtube Video

    +
    -
    youtube-dl -o - $1 | castnow --quiet -
    +
    cd ~/Documents/to-watch/;
    +
    +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
     
    -

    Passwordfillrc

    +

    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=(
    +# 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[@]}" )
    -}
    +            -p "qutebrowser> "
    +            -filter "$queried_url"
    +            -mesg $'Pick a password entry for <b>'"${QUTE_URL//&/&amp;}"'</b>'
    +    )
    +    file=$( printf "%s\n" "${files[@]}" | "${MENU_COMMAND[@]}" )
    +}
     
    @@ -748,18 +576,168 @@ See Amazon price history using CamelCamelCamel

    Org-Capture

    -
    readonly CAPTURE_SCRIPT=~/scripts/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
    +
    +
    +
    +
    + +
    +

    Org-Protocol-Capture-HTML

    +
    +

    +Defaults +

    +
    +
    heading="link"
    +template="pu"
    +url="https://google.com/"
    +
    +
    + +

    +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=''))"
    +}
    +
    +
    + +

    +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
    +}
    +
    +
    + +

    +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"
    +
    +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
    +
    +debug "ARGS: $args"
    +debug "Remaining args: ${rest[@]}"
    +
    +
    + +

    +Get HTML +

    +
    +
    if [[ -n $@ ]]
    +then
    +    debug "Text from args"
    +
    +    body="$@"
    +fi
    +
    +
    + +

    +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."
    +
    +
    + +

    +Send to Emacs +

    +
    +
    emacsclient "org-protocol://capture?template=$template&url=$url&title=$heading&body=$body"
     
    @@ -769,10 +747,12 @@ See Amazon price history using CamelCamelCamel

    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 -p "Tags" -dmenu)
    +
    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"
    +buku --add "$QUTE_URL" --tag "$tags" --title "$title" && \
    +    dunstify "Buku" "Bookmark Added" || \
    +    dunstify --urgency=critical "Buku" " Bookmark Added"
     
    @@ -782,7 +762,16 @@ 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"
    +
    +
    +
    +
    +
    +

    Download with aria2c

    +
    +
    +
    aria2p add "$1"
     
    @@ -791,7 +780,7 @@ buku --add "

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:39

    diff --git a/docs/ranger.html b/docs/ranger.html index 6a4d7e7..d32c824 100644 --- a/docs/ranger.html +++ b/docs/ranger.html @@ -1,229 +1,19 @@ - - + - Ranger Configuration - -
    @@ -240,38 +30,16 @@
    • Options
    • Command Aliases in the Console
    • -
    • Some Custom Keybindings - -
    • Define keys for the browser @@ -322,150 +90,150 @@

      Options

      -
      # Which viewmode should be used?  Possible values are:
      -#     miller: Use miller columns which show multiple levels of the hierarchy
      -#     multipane: Midnight-commander like multipane view showing all tabs next
      -#                to each other
      +
      # Which viewmode should be used?  Possible values are:
      +#     miller: Use miller columns which show multiple levels of the hierarchy
      +#     multipane: Midnight-commander like multipane view showing all tabs next
      +#                to each other
       set viewmode miller
       
      -# How many columns are there, and what are their relative widths?
      -set column_ratios 1,1
      +# How many columns are there, and what are their relative widths?
      +set column_ratios 1,1
       
      -# Which files should be hidden? (regular expression)
      +# Which files should be hidden? (regular expression)
       set hidden_filter ^\.|\.(?:pyc|vrb|pyo|lof|bak|swp|aux|log|nav|out|snm|toc|bcf|run\.xml|synctex\.gz|blg|bbl)$|^lost\+found$|^__(py)?cache__$
       
      -# Show hidden files? You can toggle this by typing 'zh'
      +# Show hidden files? You can toggle this by typing 'zh'
       set show_hidden false
       
      -# Ask for a confirmation when running the "delete" command?
      -# Valid values are "always", "never", "multiple" (default)
      -# With "multiple", ranger will ask only if you delete multiple files at once.
      +# Ask for a confirmation when running the "delete" command?
      +# Valid values are "always", "never", "multiple" (default)
      +# With "multiple", ranger will ask only if you delete multiple files at once.
       set confirm_on_delete multiple
       
      -# Which script is used to generate file previews?
      -# ranger ships with scope.sh, a script that calls external programs (see
      -# README.md for dependencies) to preview images, archives, etc.
      +# Which script is used to generate file previews?
      +# ranger ships with scope.sh, a script that calls external programs (see
      +# README.md for dependencies) to preview images, archives, etc.
       set preview_script /home/thomas/.config/ranger/scope.sh
       
      -# Use the external preview script or display simple plain text or image previews?
      +# Use the external preview script or display simple plain text or image previews?
       set use_preview_script true
       
      -# Automatically count files in the directory, even before entering them?
      +# Automatically count files in the directory, even before entering them?
       set automatically_count_files true
       
      -# Open all images in this directory when running certain image viewers
      +# Open all images in this directory when running certain image viewers
       set open_all_images true
       
      -# Be aware of version control systems and display information.
      +# Be aware of version control systems and display information.
       set vcs_aware false
       
      -# Use one of the supported image preview protocols
      +# Use one of the supported image preview protocols
       set preview_images true
       
      -# Set the preview image method
      -set preview_images_method w3m
      +# Set the preview image method
      +set preview_images_method ueberzug
       
       set colorscheme default
       
      -# Preview files on the rightmost column?
      -# And collapse (shrink) the last column if there is nothing to preview?
      +# Preview files on the rightmost column?
      +# And collapse (shrink) the last column if there is nothing to preview?
       set preview_files true
       set preview_directories true
       set collapse_preview true
       
      -# Draw the status bar on top of the browser window (default: bottom)
      +# Draw the status bar on top of the browser window (default: bottom)
       set status_bar_on_top false
       
      -# Draw a progress bar in the status bar which displays the average state of all
      -# currently running tasks which support progress bars?
      +# Draw a progress bar in the status bar which displays the average state of all
      +# currently running tasks which support progress bars?
       set draw_progress_bar_in_status_bar true
       
      -# Draw borders around columns?
      +# Draw borders around columns?
       set draw_borders true
       
      -# Display the directory name in tabs?
      +# Display the directory name in tabs?
       set dirname_in_tabs false
       
      -# Enable the mouse support?
      +# Enable the mouse support?
       set mouse_enabled true
       
      -# Display the file size in the main column or status bar?
      +# Display the file size in the main column or status bar?
       set display_size_in_main_column true
       set display_size_in_status_bar false
       
      -# Display files tags in all columns or only in main column?
      +# Display files tags in all columns or only in main column?
       set display_tags_in_all_columns false
       
      -# Set a title for the window?
      +# Set a title for the window?
       set update_title false
       
      -# Set the title to "ranger" in the tmux program?
      +# Set the title to "ranger" in the tmux program?
       set update_tmux_title true
       
      -# Shorten the title if it gets long?  The number defines how many
      -# directories are displayed at once, 0 turns off this feature.
      -set shorten_title 3
      +# Shorten the title if it gets long?  The number defines how many
      +# directories are displayed at once, 0 turns off this feature.
      +set shorten_title 3
       
      -# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
      +# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
       set tilde_in_titlebar true
       
      -# How many directory-changes or console-commands should be kept in history?
      -set max_history_size 20
      -set max_console_history_size 50
      +# How many directory-changes or console-commands should be kept in history?
      +set max_history_size 20
      +set max_console_history_size 50
       
      -# Try to keep so much space between the top/bottom border when scrolling:
      -set scroll_offset 8
      +# Try to keep so much space between the top/bottom border when scrolling:
      +set scroll_offset 8
       
      -# Flush the input after each key hit?  (Noticeable when ranger lags)
      +# Flush the input after each key hit?  (Noticeable when ranger lags)
       set flushinput true
       
      -# Padding on the right when there's no preview?
      -# This allows you to click into the space to run the file.
      +# Padding on the right when there's no preview?
      +# This allows you to click into the space to run the file.
       set padding_right true
       
       set autosave_bookmarks false
       set autoupdate_cumulative_size false
       
      -# Turning this on makes sense for screen readers:
      +# Turning this on makes sense for screen readers:
       set show_cursor false
       
      -# One of: size, natural, basename, atime, ctime, mtime, type, random
      +# One of: size, natural, basename, atime, ctime, mtime, type, random
       set sort natural
       
      -# Additional sorting options
      +# Additional sorting options
       set sort_reverse false
       set sort_case_insensitive true
       set sort_directories_first true
       set sort_unicode false
       
      -# Enable this if key combinations with the Alt Key don't work for you.
      -# (Especially on xterm)
      +# Enable this if key combinations with the Alt Key don't work for you.
      +# (Especially on xterm)
       set xterm_alt_key false
       
      -# Whether to include bookmarks in cd command
      +# Whether to include bookmarks in cd command
       set cd_bookmarks false
       
      -# Avoid previewing files larger than this size, in bytes.  Use a value of 0 to
      -# disable this feature.
      -set preview_max_size 5000000
      +# Avoid previewing files larger than this size, in bytes.  Use a value of 0 to
      +# disable this feature.
      +set preview_max_size 5000000
       
      -# Add the highlighted file to the path in the titlebar
      +# Add the highlighted file to the path in the titlebar
       set show_selection_in_titlebar true
       
      -# The delay that ranger idly waits for user input, in milliseconds, with a
      -# resolution of 100ms.  Lower delay reduces lag between directory updates but
      -# increases CPU load.
      -set idle_delay 2000
      +# The delay that ranger idly waits for user input, in milliseconds, with a
      +# resolution of 100ms.  Lower delay reduces lag between directory updates but
      +# increases CPU load.
      +set idle_delay 2000
       
      -# When the metadata manager module looks for metadata, should it only look for
      -# a ".metadata.json" file in the current directory, or do a deep search and
      -# check all directories above the current one as well?
      +# When the metadata manager module looks for metadata, should it only look for
      +# a ".metadata.json" file in the current directory, or do a deep search and
      +# check all directories above the current one as well?
       set metadata_deep_search false
       
      -# Clear all existing filters when leaving a directory
      +# Clear all existing filters when leaving a directory
       set clear_filters_on_dir_change false
       
      -# Disable displaying line numbers in main column
      +# Disable displaying line numbers in main column
       set line_numbers false
       
      @@ -493,174 +261,133 @@ alias travel scout -aefiklst

      Some Custom Keybindings

      -
      -
      -

      Extract

      -
      +

      +Extract +

      map ,x shell ~/.config/ranger/scripts/extract.sh %f
       
      -
      -
      -
      Extract Script
      -
      -
      -
      if [ $TMUX ]; then
      -    tmux split -v -l 2 atool -x $1 && tmux select-pane -U
      -else
      -    atool -x $1
      -fi
      -
      -
      -
      -
      -
      - -
      -

      Compress

      -
      +

      +Compress +

      map ,z shell ~/.config/ranger/scripts/compress.sh %f
       
      -
      -
      -
      Compress Script
      -
      -
      -
      if [ $TMUX ]; then
      -    tmux split -v -l 2 apack ${1%.*}.zip $1 && tmux select-pane -U
      -else
      -    apack ${1%.*}.zip $1
      -fi
      -
      -
      -
      -
      -
      - - -
      -

      Delete first page of pdf

      -
      -
      -
      map ,d shell ~/.config/ranger/scripts/pdf-delete-first-page.sh %f
      -
      -
      -
      - -
      -
      Delete first page of PDF
      -

      -The requirement is to have pdftk or stapler installed. +Get Bibtex from PDF

      -
      -
      if [[ -f $1 && $1 == *.pdf ]]; then
      -    # Argument if a file
      -    if type stapler > /dev/null 2>&1; then
      -        stapler del "$1" 1 /tmp/pdftk_out.pdf && mv /tmp/pdftk_out.pdf "$1"
      -    elif type pdftk > /dev/null 2>&1; then
      -        pdftk "$1" cat 2-end output /tmp/pdftk_out.pdf && mv /tmp/pdftk_out.pdf "$1"
      -    else
      -        echo "Neither pdftk nor stapler are installed"
      -    fi
      -fi
      +
      map ,b shell pdf2bib %f
       
      -
      -
      -
      -
      -

      Convert PDF to PNG

      -
      + +

      +Delete first page of pdf +

      -
      map ,cp shell pdftoppm -png %f > $(echo %f | cut -f 1 -d '.' | sed 's/$/.png/')
      +
      map ,d shell pdf-delete-first-page %f
       
      -
      -
      -
      -

      Magit Status

      -
      +

      +Convert PDF to PNG +

      -
      map ,gs shell emacsclient -create-frame --alternate-editor="" -n --eval '(magit-status)'
      +
      map ,cp shell pdf2png %f
       
      -
      -
      -
      -

      Upload with 0x0 (previously Tansfer.sh)

      -
      +

      +Magit Status +

      -
      map ,t shell ~/.config/ranger/scripts/upload.sh %f
      +
      map ,gs shell emacsclient -create-frame --alternate-editor="" -n --eval '(magit-status)'
       
      -
      -
      -
      Upload Script
      -
      +

      +Upload with 0x0 (previously Tansfer.sh) +

      -
      if [ $TMUX ]; then
      -    tmux split -v -l 1 "curl --progress-bar -F\"file=@$1\" https://0x0.st | xsel -ib;" && tmux select-pane -U
      -else
      -    curl --progress-bar -F"file=@$1" https://0x0.st | xsel -ib;
      -fi
      +
      map ,t shell upload %f
       
      -
      -
      -
      -
      -

      Open current folder with PCManFM

      -
      +

      +Open current folder with PCManFM +

      map ,o shell nohup pcmanfm %d &
       
      -
      -
      -
      -

      Open with Emacs

      -
      +

      +Open with Emacs +

      -
      map ,e shell emacsclient -create-frame --alternate-editor="" -n %f
      +
      map ,e shell emacsclient -create-frame --alternate-editor="" -n %f
       
      -
      -
      -
      -

      Print on Rnice

      -
      +

      +Print on Rnice +

      map ,p shell print-rnice %f &
       
      + +
      +

      Scripts

      +
      +
      +

      Extract Script

      +
      +
      +
      if [ $TMUX ]; then
      +    tmux split -v -l 2 atool -x $1 && tmux select-pane -U
      +else
      +    atool -x $1
      +fi
      +
      +
      +
      +
      + +
      +

      Compress Script

      +
      +
      +
      if [ $TMUX ]; then
      +    tmux split -v -l 2 apack ${1%.*}.zip $1 && tmux select-pane -U
      +else
      +    apack ${1%.*}.zip $1
      +fi
      +
      +
      +
      +
      +
      +

      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 eval fm.execute_console("shell tmux detach") if 'TMUX' in os.environ.keys() else fm.execute_console("quit")
       
      @@ -720,7 +447,7 @@ map S shell nohup $TERMINAL &
      map f console filter%space
      -# Reset filter
      +# Reset filter
       map F filter
       
      @@ -731,8 +458,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
       
      @@ -758,12 +485,12 @@ copymap <END> G
      map H     history_go -1
      -map L     history_go 1
      +map L     history_go 1
       
      -
      map ]     move_parent 1
      +
      map ]     move_parent 1
       map [     move_parent -1
       
      @@ -784,13 +511,15 @@ map [ move_parent -1

      Go to special folders

      -
      map gh cd ~
      -map ga cd ~/Cloud/administratif
      +
      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 ~/.config/literate-dotfiles
      +map gc cd ~/Cloud
      +map gV cd ~/.config/literate-dotfiles
       
      @@ -800,10 +529,10 @@ map gc 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
       
      @@ -813,11 +542,11 @@ map gc cd ~/.config/literate-dotfiles

      Yank path of directory/file

      -
      # Yank path of current 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
      +# Yank path of directory
       map yd shell -f echo -n %d    | xsel -i; xsel -o | xsel -i -b
      -# Yank filename
      +# Yank filename
       map yn shell -f echo -n %f    | xsel -i; xsel -o | xsel -i -b
       
      @@ -839,9 +568,9 @@ map yn shell -f echo -n %f | xsel -i; xsel -o | xsel -i -b
      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 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)
       
      @@ -852,11 +581,11 @@ map I eval fm.open_console('rename ' + fm.thisf
      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 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
       
      @@ -893,7 +622,7 @@ map yu uncut
      map /  console search%space
       map n  search_next
      -map N  search_next forward=False
      +map N  search_next forward=False
       
      @@ -906,11 +635,11 @@ map n search_next
      map <C-n>     tab_new ~
       map <C-w>     tab_close
       
      -map <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 gt        tab_move 1
       
      @@ -934,12 +663,12 @@ map zv set use_preview_script!
      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 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>
       
      @@ -960,9 +689,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)
      @@ -982,11 +711,11 @@ copycmap <CR>  <C-j>
       
      cmap <up>    eval fm.ui.console.history_move(-1)
      -cmap <down>  eval fm.ui.console.history_move(1)
      -cmap <left>  eval fm.ui.console.move(left=1)
      -cmap <right> eval fm.ui.console.move(right=1)
      -cmap <home>  eval fm.ui.console.move(right=0, absolute=True)
      -cmap <end>   eval fm.ui.console.move(right=-1, absolute=True)
      +cmap <down>  eval fm.ui.console.history_move(1)
      +cmap <left>  eval fm.ui.console.move(left=1)
      +cmap <right> eval fm.ui.console.move(right=1)
      +cmap <home>  eval fm.ui.console.move(right=0, absolute=True)
      +cmap <end>   eval fm.ui.console.move(right=-1, absolute=True)
       
      @@ -997,7 +726,7 @@ cmap <down> eval fm.ui.console.history_move(
      cmap <backspace>  eval fm.ui.console.delete(-1)
      -cmap <delete>     eval fm.ui.console.delete(0)
      +cmap <delete>     eval fm.ui.console.delete(0)
       cmap <C-w>        eval fm.ui.console.delete_word()
       cmap <C-y>        eval fm.ui.console.paste()
       copycmap <home>      <C-a>
      @@ -1013,209 +742,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 "$@"
       
      @@ -1229,47 +958,47 @@ label wallpaper, number 14, mi

      Import

      -
      from ranger.api.commands import *
      +
      from ranger.api.commands import *
       
      -import os
      +import os
       
      -

      fzfselect

      +

      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)
       
      @@ -1278,7 +1007,7 @@ label wallpaper, number 14, mi

      Author: Dehaeze Thomas

      -

      Created: 2020-03-19 jeu. 10:38

      +

      Created: 2020-05-26 mar. 08:39

      diff --git a/docs/sxhkd.html b/docs/sxhkd.html index cc84376..ce5979f 100644 --- a/docs/sxhkd.html +++ b/docs/sxhkd.html @@ -1,229 +1,19 @@ - - + - Simple X Hotkey Daemon - -
    @@ -286,11 +74,11 @@
    -
    # make sxhkd reload its configuration files:
    +
    # make sxhkd reload its configuration files:
     super + Escape
       pkill -USR1 -x sxhkd
     
    -# Update Polybar
    +# Update Polybar
     super + r
       $HOME/.config/polybar/scripts/launch.sh
     
    @@ -303,9 +91,9 @@ super + r
    XF86PowerOff
    -  $HOME/scripts/quit.sh
    -super + 0
    -  $HOME/scripts/quit.sh
    +  i3exit
    +super + 0
    +  i3exit
     
    @@ -315,54 +103,58 @@ super + 0

    Start Applications

    -
    # Start program launcher
    +
    # Start program launcher
     super + d
       rofi -show run
     
    -# Launch categorized menu
    +# Launch categorized menu
     super + z
       rofi -show drun
     
    -# Start Sound Manager
    +# Start network manager
    +super + w
    +  $TERMINAL -e 'sudo nmtui'
    +
    +# Start Sound Manager
     super + shift + s
       pavucontrol
     
    -# Start Bluetooth Manager
    +# Start Bluetooth Manager
     super + shift + b
       blueman-manager
     
    -# Windows Switch
    +# Windows Switch
     super + shift + w
       rofi -show window
     
    -# Bookmarks
    -# super + shift + f
    -#   $HOME/bin/bukurun
    +# Bookmarks
    +# super + shift + f
    +#   $HOME/bin/bukurun
     
    -# Passwords
    +# Passwords
     super + shift + p
       rofi-pass
     
    -
    # Start Terminal
    +
    # Start Terminal
     super + Return
       $TERMINAL
     
    -# Tmux Terminal
    +# Tmux Terminal
     super + shift + Return
    -  $TERMINAL -e 'tmux'
    +  $TERMINAL -e 'tmux'
     
    -# Start Command line Calendar
    +# Start Command line Calendar
     super + shift + c
    -  $TERMINAL -e "khal interactive"
    +  $TERMINAL -e "khal interactive"
     
    -# File Manager
    +# File Manager
     super + o
    -  $TERMINAL -e "tmux new-session -A -s ranger ranger"
    +  $TERMINAL -e "tmux new-session -A -s ranger ranger"
     
    -# Browser
    +# Browser
     super + i
       qutebrowser
     
    @@ -394,9 +186,9 @@ XF86AudioLowerVolume
    XF86MonBrightnessUp
    - xbacklight -inc 10
    + xbacklight -inc 10
     XF86MonBrightnessDown
    - xbacklight -dec 10
    + xbacklight -dec 10
     
    @@ -430,7 +222,7 @@ XF86AudioPrev
    Print
    -    ~/bin/screenshot
    +    ~/.local/bin/screenshot
     XF86Display
         rofi -show window
     
    @@ -454,60 +246,68 @@ XF86Display

    Command Mode

    -
    # Command line Calendar Client (khal)
    +
    # Command line Calendar Client (khal)
     super + space ; c
    -  $TERMINAL -e "khal interactive"
    +  $TERMINAL -e "khal interactive"
     
    -# GUI Calendar (Google Calendar)
    +# GUI Calendar (Google Calendar)
     super + space ; shift + c
       $BROWSER https://calendar.google.com/
     
    -# pcmanfm: GUI file manager
    +# pcmanfm: GUI file manager
     super + space ; o
       pcmanfm;
     
    -# Mails with neomutt
    +# Download with Aria2c
    +super + space ; d
    +  $TERMINAL -e "tmux new-session -A -s aria2p aria2p"
    +
    +# Mails with neomutt
     super + space ; m
    -  $TERMINAL -e "tmux new-session -A -s neomutt neomutt"
    +  $TERMINAL -e "tmux new-session -A -s neomutt neomutt"
     
     super + space ; shift + m
    -  $TERMINAL -e "neomutt -R"
    +  $TERMINAL -e "neomutt -R"
     
    -# Weechat
    +# Weechat
     super + space ; w
    -  $TERMINAL -e "tmux new-session -A -s weechat weechat"
    +  $TERMINAL -e "tmux new-session -A -s weechat weechat"
     
    -# News with newsboat
    +# News with newsboat
     super + space ; n
    -  $TERMINAL -e "tmux new-session -A -s newsboat newsboat"
    +  $TERMINAL -e "tmux new-session -A -s newsboat newsboat"
     
    -# Music with ncmpcpp
    +# Music with ncmpcpp
     super + space ; p
    -  $TERMINAL -e "tmux new-session -A -s ncmpcpp ncmpcpp"
    +  $TERMINAL -e "tmux new-session -A -s ncmpcpp ncmpcpp"
     
    -# Print Screen
    +# Print Screen
     super + space ; shift + p
    -  $HOME/bin/mopidy-restart
    +  $HOME/.local/bin/mopidy-restart
     
    -# Default Browser
    +# Default Browser
     super + space ; i
       $BROWSER;
     
    -# Start Terminal Application
    +# Start Terminal Application
     super + space ; t
    -  $TERMINAL -e "tremc"
    +  $TERMINAL -e "tremc"
     
    -# Alternative Browser
    +# Alternative Browser
     super + space ; shift + i
       brave;
     
    -# Emacs
    +# Emacs
     super + space ; e
       emacs;
     
    -# Emacs Client
    +# Emacs Client
     super + space ; shift + e
    -  emacsclient -create-frame --alternate-editor=""
    +  emacsclient -create-frame --alternate-editor=""
    +
    +# Weather
    +super + space ; shift + w
    +  weather;
     
    @@ -535,11 +335,11 @@ super + shift + d

    BSPWM hotkeys

    -
    # quit/restart bspwm
    +
    # quit/restart bspwm
     super + alt + {q,r}
       bspc {quit,wm -r}
     
    -# close and kill
    +# close and kill
     super + {_,shift + }q
       bspc node -{c,k}
     
    @@ -547,15 +347,15 @@ super + {_,shift + }q
    -
    -

    Monocle Layout

    -
    +
    +

    Monocle Layout

    +
    -
    # alternate between the tiled and monocle layout
    +
    # alternate between the tiled and monocle layout
     super + m
       bspc desktop -l next
     
    -# focus the next/previous node in the current desktop
    +# focus the next/previous node in the current desktop
     super + c
       bspc node -f next.local
     
    @@ -563,26 +363,26 @@ super + c
    -
    -

    Set the window State

    -
    +
    +

    Set the window State

    +
    -
    # Set the window state to tiled
    +
    # Set the window state to tiled
     super + t
       bspc node -t tiled
     
     
    -# Toggle Fullscreen State
    +# Toggle Fullscreen State
     super + f
    -  if [ -z "$(bspc query -N -n focused.fullscreen)" ]; then \
    +  if [ -z "$(bspc query -N -n focused.fullscreen)" ]; then \
           bspc node focused -t fullscreen; \
       else \
           bspc node focused -t tiled; \
       fi
     
    -# Toggle Floating State
    +# Toggle Floating State
     super + s
    -  if [ -z "$(bspc query -N -n focused.floating)" ]; then \
    +  if [ -z "$(bspc query -N -n focused.floating)" ]; then \
           bspc node focused -t floating; \
       else \
           bspc node focused -t tiled; \
    @@ -592,11 +392,11 @@ super + s
     
    -
    -

    Sticky Window

    -
    +
    +

    Sticky Window

    +
    -
    # set the node flags
    +
    # set the node flags
     super + ctrl + y
       bspc node -g sticky
     
    @@ -608,50 +408,50 @@ super + ctrl + y

    Focus and Swap

    -
    # Focus/swap the node in the given direction
    +
    # Focus/swap the node in the given direction
     super + {_,shift + }{h,j,k,l}
       bspc node -{f,s} {west,south,north,east}
     
    -# focus the last Node
    +# focus the last Node
     super + Tab
       bspc node -f last
     
    -
    # Focus the next/previous desktop in the current monitor
    +
    # Focus the next/previous desktop in the current monitor
     super + {p,n}
       bspc desktop -f {prev,next}.local
     
    -# focus the last Desktop
    +# focus the last Desktop
     super + b
       bspc desktop -f last
     
    -# focus or send to the given desktop
    +# focus or send to the given desktop
     super + {_,ctrl + }{1-9}
    -  bspc {desktop -f,node -d} '^{1-9}'
    +  bspc {desktop -f,node -d} '^{1-9}'
     
    -# Send and Focus to the given desktop
    +# Send and Focus to the given desktop
     super + shift + {1-9}
    -  bspc node -d '^{1-9}' --follow
    +  bspc node -d '^{1-9}' --follow
     
    -
    -

    Preselect

    -
    +
    +

    Preselect

    +
    -
    # preselect the direction
    +
    # preselect the direction
     super + ctrl + {h,j,k,l}
       bspc node -p {west,south,north,east}
     
    -# preselect the ratio
    -# super + ctrl + {1-9}
    -#   bspc node -o 0.{1-9}
    +# preselect the ratio
    +# super + ctrl + {1-9}
    +#   bspc node -o 0.{1-9}
     
    -# cancel the preselection for the focused node
    +# cancel the preselection for the focused node
     super + ctrl + space
       bspc node -p cancel
     
    @@ -659,24 +459,24 @@ super + ctrl + space
    -
    -

    Resize

    -
    +
    +

    Resize

    +
    -
    # expand a window by moving one of its side outward
    +
    # expand a window by moving one of its side outward
     super + alt + {h,j,k,l}
    -  bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
    +  bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
     
    -# contract a window by moving one of its side inward
    +# contract a window by moving one of its side inward
     super + alt + shift + {h,j,k,l}
    -  bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
    +  bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
     
    -
    # move a floating window
    +
    # move a floating window
     super + {Left,Down,Up,Right}
    -  bspc node -v {-20 0,0 20,0 -20,20 0}
    +  bspc node -v {-20 0,0 20,0 -20,20 0}
     
    @@ -692,11 +492,11 @@ super + {Left,Down,Up,Right}

    Quit/Restart hotkeys

    -
    # quit/restart bspwm
    +
    # quit/restart bspwm
     super + alt + {q,r}
       i3-msg {quit,restart}
     
    -# close and kill
    +# close and kill
     super + {_,shift + }q
       i3-msg {kill,kill}
     
    @@ -704,39 +504,28 @@ super + {_,shift + }q
    -
    -

    Monocle Layout

    -
    +
    +

    Set the window State

    +
    -
    # alternate between the tiled and monocle layout
    +
    # Set the window to full-screen
     super + f
    +  i3-msg fullscreen toggle
    +
    +# Set the window to floating
    +super + s
    +  i3-msg floating toggle
    +
    +# Alternate between the tiled and normal layout
    +super + t
       i3-msg layout toggle tabbed split
     
    -# Change focus between tiling / floating windows
    +# Change focus between tiling / floating windows
     super + c
       i3-msg focus mode_toggle
    -
    -
    -
    -
    -
    -

    Set the window State

    -
    -
    -
    # set the window state
    -super + {t,s, shift + f}
    -  i3-msg {fullscreen disable,floating toggle,fullscreen toggle}
    -
    -
    -
    -
    - -
    -

    Sticky Window

    -
    -
    -
    super + ctrl + y
    +# Sticky window
    +super + y
       i3-msg sticky toggle
     
    @@ -747,7 +536,7 @@ super + {t,s, shift + f}

    focus/swap

    -
    # Focus/swap the node in the given direction
    +
    # Focus/swap the node in the given direction
     super + {_,shift + }{h,Left}
       i3-msg {focus,move} left
     super + {_,shift + }{j,Down}
    @@ -760,29 +549,29 @@ super + {_,shift + }{l,Right}
     
    -
    # Focus the next/previous desktop in the current monitor
    +
    # Focus the next/previous desktop in the current monitor
     super + {p,n}
       i3-msg workspace {prev,next}
     
    -# focus the last Desktop
    +# focus the last Desktop
     super + b
       i3-msg workspace back_and_forth
     
    -# focus or send to the given desktop
    +# focus or send to the given desktop
     super + {1-9}
    -  i3-msg workspace '{1-9}'
    +  i3-msg workspace '{1-9}'
     super + ctrl + {1-9}
    -  i3-msg move container to workspace '{1-9}'
    +  i3-msg move container to workspace '{1-9}'
     super + shift + {1-9}
    -  WP={1-9} && i3-msg move container to workspace $WP && i3-msg workspace $WP
    +  WP={1-9} && i3-msg move container to workspace $WP && i3-msg workspace $WP
     
    -
    -

    Preselect

    -
    +
    +

    Preselect

    +

    Preselect the direction

    @@ -797,21 +586,21 @@ super + ctrl + {j,k,Up,Down}
    -
    -

    Resize

    -
    +
    +

    Resize

    +

    Expand/Shrink a window

    super + alt + h
    -  i3-msg resize shrink width 10 px or 10 ppt
    +  i3-msg resize shrink width 10 px or 10 ppt
     super + alt + j
    -  i3-msg resize grow height 10 px or 10 ppt
    +  i3-msg resize grow height 10 px or 10 ppt
     super + alt + k
    -  i3-msg resize shrink height 10 px or 10 ppt
    +  i3-msg resize shrink height 10 px or 10 ppt
     super + alt + l
    -  i3-msg resize grow width 10 px or 10 ppt
    +  i3-msg resize grow width 10 px or 10 ppt
     
    @@ -820,7 +609,7 @@ super + alt + l

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:39

    diff --git a/docs/systemd.html b/docs/systemd.html index b6a3a24..d8e0863 100644 --- a/docs/systemd.html +++ b/docs/systemd.html @@ -1,229 +1,19 @@ - - + - Systemd services and timers - -
    -

    https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units

    @@ -296,51 +85,59 @@

    Pass Git

    -
    -

    Service

    -
    +
    +

    Service

    +
    -
    [Unit]
    -Description=Sync Passwords every day
    -RefuseManualStart=no
    -RefuseManualStop=yes
    +
    [Unit]
    +Description=Sync Passwords every day
    +RefuseManualStart=no
    +RefuseManualStop=yes
     
    -[Service]
    -Type=oneshot
    -ExecStart=%h/scripts/pass_git_sync.sh
    +[Service]
    +Type=oneshot
    +ExecStart=%h/.local/bin/pass_git_sync
     
    -
    -

    Timer

    -
    +
    +

    Timer

    +
    -
    [Unit]
    -Description=Sync Passwords every day
    -RefuseManualStart=no
    -RefuseManualStop=no
    -Wants=network-online.target
    -After=network-online.target
    +
    [Unit]
    +Description=Sync Passwords every day
    +RefuseManualStart=no
    +RefuseManualStop=no
    +Wants=network-online.target
    +After=network-online.target
     
    -[Timer]
    -OnCalendar=*-*-* 16:00:00
    -Persistent=true
    -Unit=passgit.service
    +[Timer]
    +OnCalendar=*-*-* 16:00:00
    +Persistent=true
    +Unit=passgit.service
     
    -[Install]
    -WantedBy=default.target
    +[Install]
    +WantedBy=default.target
     
    -
    -

    Script

    -
    +
    +

    Script

    +
    -
    pass git pull --rebase && pass git push
    +
    cd ~/.local/share/buku/ || exit
    +
    +if [[ ! -z $(git status -s bookmarks.db) ]]
    +then
    +    git add bookmarks.db
    +    git commit -m "Changed bookmarks - $(date +%F)"
    +    git push
    +    exit
    +fi
     
    @@ -351,59 +148,59 @@

    Buku Git

    -
    -

    Service

    -
    +
    +

    Service

    +
    -
    [Unit]
    -Description=Sync Bookmarks every day
    -RefuseManualStart=no
    -RefuseManualStop=yes
    +
    [Unit]
    +Description=Sync Bookmarks every day
    +RefuseManualStart=no
    +RefuseManualStop=yes
     
    -[Service]
    -Type=oneshot
    -ExecStart=%h/scripts/buku_git_push.sh
    +[Service]
    +Type=oneshot
    +ExecStart=%h/.local/bin/buku_git_push
     
    -
    -

    Timer

    -
    +
    +

    Timer

    +
    -
    [Unit]
    -Description=Sync All Mails every x hours
    -RefuseManualStart=no
    -RefuseManualStop=no
    -Wants=network-online.target
    -After=network-online.target
    +
    [Unit]
    +Description=Sync All Mails every x hours
    +RefuseManualStart=no
    +RefuseManualStop=no
    +Wants=network-online.target
    +After=network-online.target
     
    -[Timer]
    -OnCalendar=*-*-* 16:00:00
    -Persistent=true
    -Unit=bukugit.service
    +[Timer]
    +OnCalendar=*-*-* 16:00:00
    +Persistent=true
    +Unit=bukugit.service
     
    -[Install]
    -WantedBy=default.target
    +[Install]
    +WantedBy=default.target
     
    -
    -

    Script

    -
    +
    +

    Script

    +
    -
    cd ~/.local/share/buku/
    +
    cd ~/.local/share/buku/
     
    -if [[ ! -z $(git status -s bookmarks.db) ]]
    -then
    -    git add bookmarks.db
    -    git commit -m "Changed bookmarks - $(date +%F)"
    -    git push
    -    exit
    -fi
    +if [[ ! -z $(git status -s bookmarks.db) ]]
    +then
    +    git add bookmarks.db
    +    git commit -m "Changed bookmarks - $(date +%F)"
    +    git push
    +    exit
    +fi
     
    @@ -414,107 +211,106 @@

    Check mail

    -
    -

    Service

    -
    +
    +

    Service

    +
    -
    [Unit]
    -Description=Check new mails
    -RefuseManualStart=no
    -RefuseManualStop=yes
    +
    [Unit]
    +Description=Check new mails
    +RefuseManualStart=no
    +RefuseManualStop=yes
     
    -[Service]
    -Type=oneshot
    -ExecStart=%h/scripts/checkmail.sh -q
    +[Service]
    +Type=oneshot
    +ExecStart=%h/.local/bin/checkmail -q
     
    -
    -

    Timer

    -
    +
    +

    Timer

    +
    -
    [Unit]
    -Description=Check Mail every x minutes
    -RefuseManualStart=no
    -RefuseManualStop=no
    -Wants=network-online.target
    -After=network-online.target
    -Requires=checkmail.service
    +
    [Unit]
    +Description=Check Mail every x minutes
    +RefuseManualStart=no
    +RefuseManualStop=no
    +Wants=network-online.target
    +After=network-online.target
    +Requires=checkmail.service
     
    -[Timer]
    -Persistent=false
    -OnBootSec=2min
    -OnUnitActiveSec=5min
    -AccuracySec=2min
    -Unit=checkmail.service
    +[Timer]
    +Persistent=false
    +OnBootSec=2min
    +OnUnitActiveSec=5min
    +AccuracySec=2min
    +Unit=checkmail.service
     
    -[Install]
    -WantedBy=default.target
    +[Install]
    +WantedBy=default.target
     
    -
    -

    Script

    -
    +
    +

    Script

    +
    -
    while [ -n "$1" ]; do # while loop starts
    -    case "$1" in
    -    -a) opt_all='--all' ;; # Check All inboxes
    -    -v) opt_verbose='--verbose' ;; # Verbose
    -    -q) opt_quiet='--quiet' ;; # Quiet
    -    *) echo "Option $1 not recognized" ;; # In case you typed a different option
    -    esac
    -    shift
    -done
    +
    while [ -n "$1" ]; do # while loop starts
    +    case "$1" in
    +    -a) opt_all='--all' ;; # Check All inboxes
    +    -v) opt_verbose='--verbose' ;; # Verbose
    +    -q) opt_quiet='--quiet' ;; # Quiet
    +    *) echo "Option $1 not recognized" ;; # In case you typed a different option
    +    esac
    +    shift
    +done
     
     
    -# =============================================================
    -# Count number of mails
    -gmail_old="$(ls ~/.mail/gmail/Inbox/new | wc -l)"
    -esrf_old="$(ls ~/.mail/esrf/Inbox/new | wc -l)"
    -ulg_old="$(ls ~/.mail/ulg/Inbox/new | wc -l)"
    -uliege_old="$(ls ~/.mail/uliege/Inbox/new | wc -l)"
    -# =============================================================
    +# =============================================================
    +# Count number of mails
    +gmail_old="$(ls ~/.mail/gmail/Inbox/new | wc -l)"
    +esrf_old="$(ls ~/.mail/esrf/Inbox/new | wc -l)"
    +ulg_old="$(ls ~/.mail/ulg/Inbox/new | wc -l)"
    +uliege_old="$(ls ~/.mail/uliege/Inbox/new | wc -l)"
    +# =============================================================
     
    -# =============================================================
    -# Retreive mails
    -mbsync $opt_all $opt_verbose gmail-Home esrf-Home ulg-Home uliege-Home
    -# =============================================================
    +# =============================================================
    +# Retreive mails
    +mbsync $opt_all $opt_verbose gmail-Home esrf-Home ulg-Home uliege-Home 2>/tmp/mbsync.log
    +# =============================================================
     
    -# =============================================================
    -# Count number of mails
    -gmail_new="$(ls ~/.mail/gmail/Inbox/new | wc -l)"
    -esrf_new="$(ls ~/.mail/esrf/Inbox/new | wc -l)"
    -ulg_new="$(ls ~/.mail/ulg/Inbox/new | wc -l)"
    -uliege_new="$(ls ~/.mail/uliege/Inbox/new | wc -l)"
    -# =============================================================
    +# =============================================================
    +# Count number of mails
    +gmail_new="$(ls ~/.mail/gmail/Inbox/new | wc -l)"
    +esrf_new="$(ls ~/.mail/esrf/Inbox/new | wc -l)"
    +ulg_new="$(ls ~/.mail/ulg/Inbox/new | wc -l)"
    +uliege_new="$(ls ~/.mail/uliege/Inbox/new | wc -l)"
    +# =============================================================
     
    -# =============================================================
    -# Total Number of new mails since last checking
    -new="$(($gmail_new+$esrf_new+$ulg_new+$uliege_new))"
    -old="$(($gmail_old+$esrf_old+$ulg_old+$uliege_old))"
    -# =============================================================
    +# =============================================================
    +# Total Number of new mails since last checking
    +new="$(($gmail_new+$esrf_new+$ulg_new+$uliege_new))"
    +old="$(($gmail_old+$esrf_old+$ulg_old+$uliege_old))"
    +# =============================================================
     
    -# =============================================================
    -# Notification
    -if [ "$new" -gt 0 ]; then
    -  dunstify --replace=98465 'Mails ' "$(($gmail_new+$esrf_new+$ulg_new+$uliege_new)) new mail(s)"
    -fi
    -# =============================================================
    +# =============================================================
    +# Notification
    +if [ "$new" -gt 0 ]; then
    +  dunstify --replace=98465 'Mails ' "$(($gmail_new+$esrf_new+$ulg_new+$uliege_new)) new mail(s)"
    +fi
    +# =============================================================
     
    -# =============================================================
    -# Indexation and Tags
    -# mu update
    -mu index --maildir=~/.mail $opt_verbose $opt_quiet
    -# Update on Emacs
    -# if [ "$(($new-$old))" -gt 0 ]; then
    -#     emacsclient --eval '(mu4e-update-index)';
    -# fi
    -# =============================================================
    +# =============================================================
    +# Indexation and Tags
    +if pgrep -f 'mu server'; then
    +    emacsclient --eval '(mu4e-update-index)'
    +else
    +    mu index $opt_verbose $opt_quiet
    +fi
    +# =============================================================
     
    @@ -525,44 +321,44 @@ mu index --maildir=~/.mail $opt_verbose $

    Sync mail

    -
    -

    Service

    -
    +
    +

    Service

    +
    -
    [Unit]
    -Description=Sync all mails
    -RefuseManualStart=no
    -RefuseManualStop=yes
    +
    [Unit]
    +Description=Sync all mails
    +RefuseManualStart=no
    +RefuseManualStop=yes
     
    -[Service]
    -Type=oneshot
    -ExecStart=%h/scripts/checkmail.sh -a -q
    +[Service]
    +Type=oneshot
    +ExecStart=%h/.local/bin/checkmail -a -q
     
    -
    -

    Timer

    -
    +
    +

    Timer

    +
    -
    [Unit]
    -Description=Sync All Mails every x hours
    -RefuseManualStart=no
    -RefuseManualStop=no
    -Wants=network-online.target
    -After=network-online.target
    -Requires=syncmail.service
    +
    [Unit]
    +Description=Sync All Mails every x hours
    +RefuseManualStart=no
    +RefuseManualStop=no
    +Wants=network-online.target
    +After=network-online.target
    +Requires=syncmail.service
     
    -[Timer]
    -Persistent=false
    -OnBootSec=30min
    -OnUnitActiveSec=300min
    -AccuracySec=10min
    -Unit=syncmail.service
    +[Timer]
    +Persistent=false
    +OnBootSec=30min
    +OnUnitActiveSec=300min
    +AccuracySec=10min
    +Unit=syncmail.service
     
    -[Install]
    -WantedBy=default.target
    +[Install]
    +WantedBy=default.target
     
    @@ -573,38 +369,38 @@ mu index --maildir=~/.mail $opt_verbose $

    Vdirsyncer

    -
    -

    Service

    -
    +
    +

    Service

    +
    -
    [Unit]
    -Description=Synchronize calendars and contacts
    -Documentation=https://vdirsyncer.readthedocs.org/
    -Wants=network-online.target
    -After=network-online.target
    +
    [Unit]
    +Description=Synchronize calendars and contacts
    +Documentation=https://vdirsyncer.readthedocs.org/
    +Wants=network-online.target
    +After=network-online.target
     
    -[Service]
    -ExecStart=/usr/bin/vdirsyncer --verbosity "ERROR" sync
    -Type=oneshot
    +[Service]
    +ExecStart=/usr/bin/vdirsyncer --verbosity "ERROR" sync
    +Type=oneshot
     
    -
    -

    Timer

    -
    +
    +

    Timer

    +
    -
    [Unit]
    -Description=Synchronize vdirs
    +
    [Unit]
    +Description=Synchronize vdirs
     
    -[Timer]
    -OnBootSec=5m
    -OnUnitActiveSec=15m
    -AccuracySec=5m
    +[Timer]
    +OnBootSec=5m
    +OnUnitActiveSec=15m
    +AccuracySec=5m
     
    -[Install]
    -WantedBy=timers.target
    +[Install]
    +WantedBy=timers.target
     
    @@ -615,20 +411,20 @@ mu index --maildir=~/.mail $opt_verbose $

    SSH Agent

    -
    -

    Service

    -
    +
    +

    Service

    +
    -
    [Unit]
    -Description=SSH key agent
    +
    [Unit]
    +Description=SSH key agent
     
    -[Service]
    -Type=simple
    -Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
    -ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK
    +[Service]
    +Type=simple
    +Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
    +ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK
     
    -[Install]
    -WantedBy=default.target
    +[Install]
    +WantedBy=default.target
     
    @@ -639,19 +435,19 @@ mu index --maildir=~/.mail $opt_verbose $

    Powertop

    -
    -

    Service

    -
    +
    +

    Service

    +
    -
    [Unit]
    -Description=Powertop tunings
    +
    [Unit]
    +Description=Powertop tunings
     
    -[Service]
    -ExecStart=/usr/bin/powertop --auto-tune
    -RemainAfterExit=true
    +[Service]
    +ExecStart=/usr/bin/powertop --auto-tune
    +RemainAfterExit=true
     
    -[Install]
    -WantedBy=multi-user.target
    +[Install]
    +WantedBy=multi-user.target
     
    @@ -662,25 +458,25 @@ mu index --maildir=~/.mail $opt_verbose $

    Mopidy

    -
    -

    Service

    -
    +
    +

    Service

    +
    -
    [Unit]
    -Description=Mopidy music server
    -After=avahi-daemon.service
    -After=dbus.service
    -After=network.target
    -After=nss-lookup.target
    -After=pulseaudio.service
    -After=remote-fs.target
    -After=sound.target
    +
    [Unit]
    +Description=Mopidy music server
    +After=avahi-daemon.service
    +After=dbus.service
    +After=network.target
    +After=nss-lookup.target
    +After=pulseaudio.service
    +After=remote-fs.target
    +After=sound.target
     
    -[Service]
    -ExecStart=/usr/bin/mopidy --config ~/.config/mopidy/mopidy.conf
    +[Service]
    +ExecStart=/usr/bin/mopidy --config ~/.config/mopidy/mopidy.conf
     
    -[Install]
    -WantedBy=multi-user.target
    +[Install]
    +WantedBy=multi-user.target
     
    @@ -689,7 +485,7 @@ mu index --maildir=~/.mail $opt_verbose $

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:40

    diff --git a/docs/torrent.html b/docs/torrent.html index 8d6e111..38db958 100644 --- a/docs/torrent.html +++ b/docs/torrent.html @@ -1,230 +1,19 @@ - - - + - Torrent Configuration - -
    @@ -255,54 +52,109 @@

    -
    [Connection]
    -password = <<get-password(passname="nas/transmission")>>
    -username = tdehaeze
    -port = 9091
    -host = 82.64.103.2
    -path = /transmission/rpc
    -ssl = False
    +
    [Connection]
    +password = <<get-password(passname="nas/transmission")>>
    +username = tdehaeze
    +port = 9091
    +host = 82.64.103.2
    +path = /transmission/rpc
    +ssl = False
     
    -[Sorting]
    -order = name
    +[Sorting]
    +order = name
     
    -[Filtering]
    -filter =
    -invert = False
    +[Filtering]
    +filter =
    +invert = False
     
    -[Misc]
    -compact_list = False
    -torrentname_is_progressbar = True
    -file_viewer = xdg-open %%s
    -file_open_in_terminal = True
    +[Misc]
    +compact_list = False
    +torrentname_is_progressbar = True
    +file_viewer = xdg-open %%s
    +file_open_in_terminal = True
     
    -[Colors]
    -title_seed = bg:green,fg:black
    -title_download = bg:blue,fg:black
    -title_idle = bg:cyan,fg:black
    -title_verify = bg:magenta,fg:black
    -title_paused = bg:black,fg:white
    -title_error = bg:red,fg:white
    -download_rate = bg:black,fg:blue
    -upload_rate = bg:black,fg:red
    -eta+ratio = bg:black,fg:white
    -filter_status = bg:red,fg:black
    -dialog = bg:black,fg:white
    -dialog_important = bg:red,fg:black
    -button = bg:white,fg:black
    -button_focused = bg:black,fg:white
    -file_prio_high = bg:red,fg:black
    -file_prio_normal = bg:white,fg:black
    -file_prio_low = bg:yellow,fg:black
    -file_prio_off = bg:blue,fg:black
    +[Colors]
    +title_seed = bg:green,fg:black
    +title_download = bg:blue,fg:black
    +title_idle = bg:cyan,fg:black
    +title_verify = bg:magenta,fg:black
    +title_paused = bg:black,fg:white
    +title_error = bg:red,fg:white
    +download_rate = bg:black,fg:blue
    +upload_rate = bg:black,fg:red
    +eta+ratio = bg:black,fg:white
    +filter_status = bg:red,fg:black
    +dialog = bg:black,fg:white
    +dialog_important = bg:red,fg:black
    +button = bg:white,fg:black
    +button_focused = bg:black,fg:white
    +file_prio_high = bg:red,fg:black
    +file_prio_normal = bg:white,fg:black
    +file_prio_low = bg:yellow,fg:black
    +file_prio_off = bg:blue,fg:black
     
    +
    +

    Aria2

    +
    +
    +
    +

    Aria2c Config

    +
    +
    +
    continue
    +daemon=true
    +dir=/home/thomas/Downloads
    +max-connection-per-server=4
    +max-concurrent-downloads=3
    +enable-rpc=true
    +rpc-listen-all=true
    +http-user=dehaeze.thomas@gmail.com
    +http-passwd=<<get-password(passname="1fichier.com/dehaeze.thomas@gmail.com")>>
    +on-download-start=/home/thomas/.config/aria2/download-start.sh
    +on-download-complete=/home/thomas/.config/aria2/download-complete.sh
    +on-download-error=/home/thomas/.config/aria2/download-error.sh
    +
    +
    +
    +
    + +
    +

    Download Start Script

    +
    +
    +
    dunstify "DL Started" "$(basename \"$3\" 2> /dev/null)"
    +
    +
    +
    +
    + +
    +

    Download Complete Script

    +
    +
    +
    dunstify "DL Completed" "$(basename \"$3\" 2> /dev/null)"
    +
    +
    +
    +
    + +
    +

    Download Error Script

    +
    +
    +
    dunstify --urgency=critical "DL Failed" "$(basename \"$3\" 2> /dev/null)"
    +
    +
    +
    +
    +

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:40

    diff --git a/docs/xconfig.html b/docs/xconfig.html index ad9b9a7..133c2bf 100644 --- a/docs/xconfig.html +++ b/docs/xconfig.html @@ -1,229 +1,19 @@ - - + - Configuration Files related to Xorg - -
    @@ -259,29 +49,29 @@

    Colors

    -
    #define base00 #32302f
    -#define base01 #3c3836
    -#define base02 #504945
    -#define base03 #665c54
    -#define base04 #bdae93
    -#define base05 #d5c4a1
    -#define base06 #ebdbb2
    -#define base07 #fbf1c7
    -#define base08 #fb4934
    -#define base09 #fe8019
    -#define base0A #fabd2f
    -#define base0B #b8bb26
    -#define base0C #8ec07c
    -#define base0D #83a598
    -#define base0E #d3869b
    -#define base0F #d65d0e
    +
    #define base00 #32302f
    +#define base01 #3c3836
    +#define base02 #504945
    +#define base03 #665c54
    +#define base04 #bdae93
    +#define base05 #d5c4a1
    +#define base06 #ebdbb2
    +#define base07 #fbf1c7
    +#define base08 #fb4934
    +#define base09 #fe8019
    +#define base0A #fabd2f
    +#define base0B #b8bb26
    +#define base0C #8ec07c
    +#define base0D #83a598
    +#define base0E #d3869b
    +#define base0F #d65d0e
     
     *foreground:   base05
    -#ifdef background_opacity
    +#ifdef background_opacity
     *background:   [background_opacity]base00
    -#else
    +#else
     *background:   base00
    -#endif
    +#endif
     *cursorColor:  base05
     
     *color0:       base00
    @@ -302,8 +92,8 @@
     *color14:      base0C
     *color15:      base07
     
    -! Note: colors beyond 15 might not be loaded (e.g., xterm, urxvt),
    -! use 'shell' template to set these if necessary
    +! Note: colors beyond 15 might not be loaded (e.g., xterm, urxvt),
    +! use 'shell' template to set these if necessary
     *color16:      base09
     *color17:      base0F
     *color18:      base01
    @@ -319,12 +109,12 @@
     

    Fonts

    -
    Xft.dpi:       96
    -Xft.autohint:  0
    +
    Xft.dpi:       96
    +Xft.autohint:  0
     Xft.lcdfilter: lcddefault
     Xft.hintstyle: hintfull
    -Xft.hinting:   1
    -Xft.antialias: 1
    +Xft.hinting:   1
    +Xft.antialias: 1
     Xft.rgba:      rgb
     
    @@ -336,7 +126,7 @@ Xft.rgba: rgb
    Xcursor.theme: Breeze
    -Xcursor.size:  0
    +Xcursor.size:  0
     
    @@ -347,254 +137,254 @@ Xcursor.size: 0

    Xmodmap

    -
    keycode   8 =
    -keycode   9 = Escape NoSymbol Escape
    -keycode  10 = 1 exclam 1 exclam
    -keycode  11 = 2 at 2 at
    -keycode  12 = 3 numbersign 3 numbersign
    -keycode  13 = 4 dollar 4 dollar
    -keycode  14 = 5 percent 5 percent
    -keycode  15 = 6 asciicircum 6 asciicircum
    -keycode  16 = 7 ampersand 7 ampersand
    -keycode  17 = 8 asterisk 8 asterisk
    -keycode  18 = 9 parenleft 9 parenleft
    -keycode  19 = 0 parenright 0 parenright
    -keycode  20 = minus underscore minus underscore
    -keycode  21 = equal plus equal plus
    -keycode  22 = BackSpace BackSpace BackSpace BackSpace
    -keycode  23 = Tab ISO_Left_Tab Tab ISO_Left_Tab
    -keycode  24 = q Q q Q
    -keycode  25 = w W w W
    -keycode  26 = e E e E
    -keycode  27 = r R r R
    -keycode  28 = t T t T
    -keycode  29 = y Y y Y
    -keycode  30 = u U u U
    -keycode  31 = i I i I
    -keycode  32 = o O o O
    -keycode  33 = p P p P
    -keycode  34 = bracketleft braceleft bracketleft braceleft
    -keycode  35 = bracketright braceright bracketright braceright
    -keycode  36 = Return NoSymbol Return
    -keycode  37 = Control_L NoSymbol Control_L
    -keycode  38 = a A a A
    -keycode  39 = s S s S
    -keycode  40 = d D d D
    -keycode  41 = f F f F
    -keycode  42 = g G g G
    -keycode  43 = h H h H
    -keycode  44 = j J j J
    -keycode  45 = k K k K
    -keycode  46 = l L l L
    -keycode  47 = semicolon colon semicolon colon
    -keycode  48 = apostrophe quotedbl apostrophe quotedbl
    -keycode  49 = grave asciitilde grave asciitilde
    -keycode  50 = Shift_L NoSymbol Shift_L
    -keycode  51 = backslash bar backslash bar
    -keycode  52 = z Z z Z
    -keycode  53 = x X x X
    -keycode  54 = c C c C
    -keycode  55 = v V v V
    -keycode  56 = b B b B
    -keycode  57 = n N n N
    -keycode  58 = m M m M
    -keycode  59 = comma less comma less
    -keycode  60 = period greater period greater
    -keycode  61 = slash question slash question
    -keycode  62 = Shift_R NoSymbol Shift_R
    -keycode  63 = KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply XF86ClearGrab
    -keycode  64 = Alt_L Meta_L Alt_L Meta_L
    -keycode  65 = space NoSymbol space
    -keycode  66 = Caps_Lock NoSymbol Caps_Lock
    -keycode  67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1
    -keycode  68 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2
    -keycode  69 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3
    -keycode  70 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4
    -keycode  71 = F5 F5 F5 F5 F5 F5 XF86Switch_VT_5
    -keycode  72 = F6 F6 F6 F6 F6 F6 XF86Switch_VT_6
    -keycode  73 = F7 F7 F7 F7 F7 F7 XF86Switch_VT_7
    -keycode  74 = F8 F8 F8 F8 F8 F8 XF86Switch_VT_8
    -keycode  75 = F9 F9 F9 F9 F9 F9 XF86Switch_VT_9
    -keycode  76 = F10 F10 F10 F10 F10 F10 XF86Switch_VT_10
    -keycode  77 = Num_Lock NoSymbol Num_Lock
    -keycode  78 = Scroll_Lock NoSymbol Scroll_Lock
    -keycode  79 = KP_Home KP_7 KP_Home KP_7
    -keycode  80 = KP_Up KP_8 KP_Up KP_8
    -keycode  81 = KP_Prior KP_9 KP_Prior KP_9
    -keycode  82 = KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract XF86Prev_VMode
    -keycode  83 = KP_Left KP_4 KP_Left KP_4
    -keycode  84 = KP_Begin KP_5 KP_Begin KP_5
    -keycode  85 = KP_Right KP_6 KP_Right KP_6
    -keycode  86 = KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add XF86Next_VMode
    -keycode  87 = KP_End KP_1 KP_End KP_1
    -keycode  88 = KP_Down KP_2 KP_Down KP_2
    -keycode  89 = KP_Next KP_3 KP_Next KP_3
    -keycode  90 = KP_Insert KP_0 KP_Insert KP_0
    -keycode  91 = KP_Delete KP_Decimal KP_Delete KP_Decimal
    -keycode  92 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift
    -keycode  93 =
    -keycode  94 = less greater less greater bar brokenbar bar
    -keycode  95 = F11 F11 F11 F11 F11 F11 XF86Switch_VT_11
    -keycode  96 = F12 F12 F12 F12 F12 F12 XF86Switch_VT_12
    -keycode  97 =
    -keycode  98 = Katakana NoSymbol Katakana
    -keycode  99 = Hiragana NoSymbol Hiragana
    -keycode 100 = Henkan_Mode NoSymbol Henkan_Mode
    -keycode 101 = Hiragana_Katakana NoSymbol Hiragana_Katakana
    -keycode 102 = Muhenkan NoSymbol Muhenkan
    -keycode 103 =
    -keycode 104 = KP_Enter NoSymbol KP_Enter
    -keycode 105 = Control_R NoSymbol Control_R
    -keycode 106 = KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide XF86Ungrab
    -keycode 107 = Print Sys_Req Print Sys_Req
    -keycode 108 = Alt_R Meta_R Alt_R Meta_R
    -keycode 109 = Linefeed NoSymbol Linefeed
    -keycode 110 = Home NoSymbol Home
    -keycode 111 = Up NoSymbol Up
    -keycode 112 = Prior NoSymbol Prior
    -keycode 113 = Left NoSymbol Left
    -keycode 114 = Right NoSymbol Right
    -keycode 115 = End NoSymbol End
    -keycode 116 = Down NoSymbol Down
    -keycode 117 = Next NoSymbol Next
    -keycode 118 = Insert NoSymbol Insert
    -keycode 119 = Delete NoSymbol Delete
    -keycode 120 =
    -keycode 121 = XF86AudioMute NoSymbol XF86AudioMute
    -keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
    -keycode 123 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
    -keycode 124 = XF86PowerOff NoSymbol XF86PowerOff
    -keycode 125 = KP_Equal NoSymbol KP_Equal
    -keycode 126 = plusminus NoSymbol plusminus
    -keycode 127 = Pause Break Pause Break
    -keycode 128 = XF86LaunchA NoSymbol XF86LaunchA
    -keycode 129 = KP_Decimal KP_Decimal KP_Decimal KP_Decimal
    -keycode 130 = Hangul NoSymbol Hangul
    -keycode 131 = Hangul_Hanja NoSymbol Hangul_Hanja
    -keycode 132 =
    -keycode 133 =
    -keycode 134 = Super_R NoSymbol Super_R
    -keycode 135 = Menu NoSymbol Menu
    -keycode 136 = Cancel NoSymbol Cancel
    -keycode 137 = Redo NoSymbol Redo
    -keycode 138 = SunProps NoSymbol SunProps
    -keycode 139 = Undo NoSymbol Undo
    -keycode 140 = SunFront NoSymbol SunFront
    -keycode 141 = XF86Copy NoSymbol XF86Copy
    -keycode 142 = XF86Open NoSymbol XF86Open
    -keycode 143 = XF86Paste NoSymbol XF86Paste
    -keycode 144 = Find NoSymbol Find
    -keycode 145 = XF86Cut NoSymbol XF86Cut
    -keycode 146 = Help NoSymbol Help
    -keycode 147 = xf86menukb nosymbol xf86menukb
    -keycode 148 = XF86Calculator NoSymbol XF86Calculator
    -keycode 149 =
    -keycode 150 = XF86Sleep NoSymbol XF86Sleep
    -keycode 151 = XF86WakeUp NoSymbol XF86WakeUp
    -keycode 152 = XF86Explorer NoSymbol XF86Explorer
    -keycode 153 = XF86Send NoSymbol XF86Send
    -keycode 154 =
    -keycode 155 = XF86Xfer NoSymbol XF86Xfer
    -keycode 156 = XF86Launch1 NoSymbol XF86Launch1
    -keycode 157 = XF86Launch2 NoSymbol XF86Launch2
    -keycode 158 = XF86WWW NoSymbol XF86WWW
    -keycode 159 = XF86DOS NoSymbol XF86DOS
    -keycode 160 = XF86ScreenSaver NoSymbol XF86ScreenSaver
    -keycode 161 = XF86RotateWindows NoSymbol XF86RotateWindows
    -keycode 162 = XF86TaskPane NoSymbol XF86TaskPane
    -keycode 163 = XF86Mail NoSymbol XF86Mail
    -keycode 164 = XF86Favorites NoSymbol XF86Favorites
    -keycode 165 = XF86MyComputer NoSymbol XF86MyComputer
    -keycode 166 = XF86Back NoSymbol XF86Back
    -keycode 167 = XF86Forward NoSymbol XF86Forward
    -keycode 168 =
    -keycode 169 = XF86Eject NoSymbol XF86Eject
    -keycode 170 = XF86Eject XF86Eject XF86Eject XF86Eject
    -keycode 171 = XF86AudioNext NoSymbol XF86AudioNext
    -keycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause
    -keycode 173 = XF86AudioPrev NoSymbol XF86AudioPrev
    -keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject
    -keycode 175 = XF86AudioRecord NoSymbol XF86AudioRecord
    -keycode 176 = XF86AudioRewind NoSymbol XF86AudioRewind
    -keycode 177 = XF86Phone NoSymbol XF86Phone
    -keycode 178 =
    -keycode 179 = XF86Tools NoSymbol XF86Tools
    -keycode 180 = XF86HomePage NoSymbol XF86HomePage
    -keycode 181 = XF86Reload NoSymbol XF86Reload
    -keycode 182 = XF86Close NoSymbol XF86Close
    -keycode 183 =
    -keycode 184 =
    -keycode 185 = XF86ScrollUp NoSymbol XF86ScrollUp
    -keycode 186 = XF86ScrollDown NoSymbol XF86ScrollDown
    -keycode 187 = parenleft NoSymbol parenleft
    -keycode 188 = parenright NoSymbol parenright
    -keycode 189 = XF86New NoSymbol XF86New
    -keycode 190 = Redo NoSymbol Redo
    -keycode 191 = XF86Tools NoSymbol XF86Tools
    -keycode 192 = XF86Launch5 NoSymbol XF86Launch5
    -keycode 193 = XF86Launch6 NoSymbol XF86Launch6
    -keycode 194 = XF86Launch7 NoSymbol XF86Launch7
    -keycode 195 = XF86Launch8 NoSymbol XF86Launch8
    -keycode 196 = XF86Launch9 NoSymbol XF86Launch9
    -keycode 197 =
    -keycode 198 = XF86AudioMicMute NoSymbol XF86AudioMicMute
    -keycode 199 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle
    -keycode 200 = XF86TouchpadOn NoSymbol XF86TouchpadOn
    -keycode 201 = XF86TouchpadOff NoSymbol XF86TouchpadOff
    -keycode 202 =
    -keycode 203 = Mode_switch NoSymbol Mode_switch
    -keycode 204 = NoSymbol Alt_L NoSymbol Alt_L
    -keycode 205 = NoSymbol Meta_L NoSymbol Meta_L
    -keycode 206 = NoSymbol Super_L NoSymbol Super_L
    -keycode 207 = NoSymbol Hyper_L NoSymbol Hyper_L
    -keycode 208 = XF86AudioPlay NoSymbol XF86AudioPlay
    -keycode 209 = XF86AudioPause NoSymbol XF86AudioPause
    -keycode 210 = XF86Launch3 NoSymbol XF86Launch3
    -keycode 211 = XF86Launch4 NoSymbol XF86Launch4
    -keycode 212 = XF86LaunchB NoSymbol XF86LaunchB
    -keycode 213 = XF86Suspend NoSymbol XF86Suspend
    -keycode 214 = XF86Close NoSymbol XF86Close
    -keycode 215 = XF86AudioPlay NoSymbol XF86AudioPlay
    -keycode 216 = XF86AudioForward NoSymbol XF86AudioForward
    -keycode 217 =
    -keycode 218 = Print NoSymbol Print
    -keycode 219 =
    -keycode 220 = XF86WebCam NoSymbol XF86WebCam
    -keycode 221 =
    -keycode 222 =
    -keycode 223 = XF86Mail NoSymbol XF86Mail
    -keycode 224 = XF86Messenger NoSymbol XF86Messenger
    -keycode 225 = XF86Search NoSymbol XF86Search
    -keycode 226 = XF86Go NoSymbol XF86Go
    -keycode 227 = XF86Finance NoSymbol XF86Finance
    -keycode 228 = XF86Game NoSymbol XF86Game
    -keycode 229 = XF86Shop NoSymbol XF86Shop
    -keycode 230 =
    -keycode 231 = Cancel NoSymbol Cancel
    -keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown
    -keycode 233 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp
    -keycode 234 = XF86AudioMedia NoSymbol XF86AudioMedia
    -keycode 235 = XF86Display NoSymbol XF86Display
    -keycode 236 = XF86KbdLightOnOff NoSymbol XF86KbdLightOnOff
    -keycode 237 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown
    -keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp
    -keycode 239 = XF86Send NoSymbol XF86Send
    -keycode 240 = XF86Reply NoSymbol XF86Reply
    -keycode 241 = XF86MailForward NoSymbol XF86MailForward
    -keycode 242 = XF86Save NoSymbol XF86Save
    -keycode 243 = XF86Documents NoSymbol XF86Documents
    -keycode 244 = XF86Battery NoSymbol XF86Battery
    -keycode 245 = XF86Bluetooth NoSymbol XF86Bluetooth
    -keycode 246 = XF86WLAN NoSymbol XF86WLAN
    -keycode 247 =
    -keycode 248 = XF86Display NoSymbol XF86Display
    -keycode 249 =
    -keycode 250 =
    -keycode 251 =
    -keycode 252 =
    -keycode 253 =
    -keycode 254 = XF86WWAN NoSymbol XF86WWAN
    -keycode 255 = XF86RFKill NoSymbol XF86RFKill
    +
    keycode   8 =
    +keycode   9 = Escape NoSymbol Escape
    +keycode  10 = 1 exclam 1 exclam
    +keycode  11 = 2 at 2 at
    +keycode  12 = 3 numbersign 3 numbersign
    +keycode  13 = 4 dollar 4 dollar
    +keycode  14 = 5 percent 5 percent
    +keycode  15 = 6 asciicircum 6 asciicircum
    +keycode  16 = 7 ampersand 7 ampersand
    +keycode  17 = 8 asterisk 8 asterisk
    +keycode  18 = 9 parenleft 9 parenleft
    +keycode  19 = 0 parenright 0 parenright
    +keycode  20 = minus underscore minus underscore
    +keycode  21 = equal plus equal plus
    +keycode  22 = BackSpace BackSpace BackSpace BackSpace
    +keycode  23 = Tab ISO_Left_Tab Tab ISO_Left_Tab
    +keycode  24 = q Q q Q
    +keycode  25 = w W w W
    +keycode  26 = e E e E
    +keycode  27 = r R r R
    +keycode  28 = t T t T
    +keycode  29 = y Y y Y
    +keycode  30 = u U u U
    +keycode  31 = i I i I
    +keycode  32 = o O o O
    +keycode  33 = p P p P
    +keycode  34 = bracketleft braceleft bracketleft braceleft
    +keycode  35 = bracketright braceright bracketright braceright
    +keycode  36 = Return NoSymbol Return
    +keycode  37 = Control_L NoSymbol Control_L
    +keycode  38 = a A a A
    +keycode  39 = s S s S
    +keycode  40 = d D d D
    +keycode  41 = f F f F
    +keycode  42 = g G g G
    +keycode  43 = h H h H
    +keycode  44 = j J j J
    +keycode  45 = k K k K
    +keycode  46 = l L l L
    +keycode  47 = semicolon colon semicolon colon
    +keycode  48 = apostrophe quotedbl apostrophe quotedbl
    +keycode  49 = grave asciitilde grave asciitilde
    +keycode  50 = Shift_L NoSymbol Shift_L
    +keycode  51 = backslash bar backslash bar
    +keycode  52 = z Z z Z
    +keycode  53 = x X x X
    +keycode  54 = c C c C
    +keycode  55 = v V v V
    +keycode  56 = b B b B
    +keycode  57 = n N n N
    +keycode  58 = m M m M
    +keycode  59 = comma less comma less
    +keycode  60 = period greater period greater
    +keycode  61 = slash question slash question
    +keycode  62 = Shift_R NoSymbol Shift_R
    +keycode  63 = KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply XF86ClearGrab
    +keycode  64 = Alt_L Meta_L Alt_L Meta_L
    +keycode  65 = space NoSymbol space
    +keycode  66 = Caps_Lock NoSymbol Caps_Lock
    +keycode  67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1
    +keycode  68 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2
    +keycode  69 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3
    +keycode  70 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4
    +keycode  71 = F5 F5 F5 F5 F5 F5 XF86Switch_VT_5
    +keycode  72 = F6 F6 F6 F6 F6 F6 XF86Switch_VT_6
    +keycode  73 = F7 F7 F7 F7 F7 F7 XF86Switch_VT_7
    +keycode  74 = F8 F8 F8 F8 F8 F8 XF86Switch_VT_8
    +keycode  75 = F9 F9 F9 F9 F9 F9 XF86Switch_VT_9
    +keycode  76 = F10 F10 F10 F10 F10 F10 XF86Switch_VT_10
    +keycode  77 = Num_Lock NoSymbol Num_Lock
    +keycode  78 = Scroll_Lock NoSymbol Scroll_Lock
    +keycode  79 = KP_Home KP_7 KP_Home KP_7
    +keycode  80 = KP_Up KP_8 KP_Up KP_8
    +keycode  81 = KP_Prior KP_9 KP_Prior KP_9
    +keycode  82 = KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract XF86Prev_VMode
    +keycode  83 = KP_Left KP_4 KP_Left KP_4
    +keycode  84 = KP_Begin KP_5 KP_Begin KP_5
    +keycode  85 = KP_Right KP_6 KP_Right KP_6
    +keycode  86 = KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add XF86Next_VMode
    +keycode  87 = KP_End KP_1 KP_End KP_1
    +keycode  88 = KP_Down KP_2 KP_Down KP_2
    +keycode  89 = KP_Next KP_3 KP_Next KP_3
    +keycode  90 = KP_Insert KP_0 KP_Insert KP_0
    +keycode  91 = KP_Delete KP_Decimal KP_Delete KP_Decimal
    +keycode  92 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift
    +keycode  93 =
    +keycode  94 = less greater less greater bar brokenbar bar
    +keycode  95 = F11 F11 F11 F11 F11 F11 XF86Switch_VT_11
    +keycode  96 = F12 F12 F12 F12 F12 F12 XF86Switch_VT_12
    +keycode  97 =
    +keycode  98 = Katakana NoSymbol Katakana
    +keycode  99 = Hiragana NoSymbol Hiragana
    +keycode 100 = Henkan_Mode NoSymbol Henkan_Mode
    +keycode 101 = Hiragana_Katakana NoSymbol Hiragana_Katakana
    +keycode 102 = Muhenkan NoSymbol Muhenkan
    +keycode 103 =
    +keycode 104 = KP_Enter NoSymbol KP_Enter
    +keycode 105 = Control_R NoSymbol Control_R
    +keycode 106 = KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide XF86Ungrab
    +keycode 107 = Print Sys_Req Print Sys_Req
    +keycode 108 = Alt_R Meta_R Alt_R Meta_R
    +keycode 109 = Linefeed NoSymbol Linefeed
    +keycode 110 = Home NoSymbol Home
    +keycode 111 = Up NoSymbol Up
    +keycode 112 = Prior NoSymbol Prior
    +keycode 113 = Left NoSymbol Left
    +keycode 114 = Right NoSymbol Right
    +keycode 115 = End NoSymbol End
    +keycode 116 = Down NoSymbol Down
    +keycode 117 = Next NoSymbol Next
    +keycode 118 = Insert NoSymbol Insert
    +keycode 119 = Delete NoSymbol Delete
    +keycode 120 =
    +keycode 121 = XF86AudioMute NoSymbol XF86AudioMute
    +keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
    +keycode 123 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
    +keycode 124 = XF86PowerOff NoSymbol XF86PowerOff
    +keycode 125 = KP_Equal NoSymbol KP_Equal
    +keycode 126 = plusminus NoSymbol plusminus
    +keycode 127 = Pause Break Pause Break
    +keycode 128 = XF86LaunchA NoSymbol XF86LaunchA
    +keycode 129 = KP_Decimal KP_Decimal KP_Decimal KP_Decimal
    +keycode 130 = Hangul NoSymbol Hangul
    +keycode 131 = Hangul_Hanja NoSymbol Hangul_Hanja
    +keycode 132 =
    +keycode 133 =
    +keycode 134 = Super_R NoSymbol Super_R
    +keycode 135 = Menu NoSymbol Menu
    +keycode 136 = Cancel NoSymbol Cancel
    +keycode 137 = Redo NoSymbol Redo
    +keycode 138 = SunProps NoSymbol SunProps
    +keycode 139 = Undo NoSymbol Undo
    +keycode 140 = SunFront NoSymbol SunFront
    +keycode 141 = XF86Copy NoSymbol XF86Copy
    +keycode 142 = XF86Open NoSymbol XF86Open
    +keycode 143 = XF86Paste NoSymbol XF86Paste
    +keycode 144 = Find NoSymbol Find
    +keycode 145 = XF86Cut NoSymbol XF86Cut
    +keycode 146 = Help NoSymbol Help
    +keycode 147 = xf86menukb nosymbol xf86menukb
    +keycode 148 = XF86Calculator NoSymbol XF86Calculator
    +keycode 149 =
    +keycode 150 = XF86Sleep NoSymbol XF86Sleep
    +keycode 151 = XF86WakeUp NoSymbol XF86WakeUp
    +keycode 152 = XF86Explorer NoSymbol XF86Explorer
    +keycode 153 = XF86Send NoSymbol XF86Send
    +keycode 154 =
    +keycode 155 = XF86Xfer NoSymbol XF86Xfer
    +keycode 156 = XF86Launch1 NoSymbol XF86Launch1
    +keycode 157 = XF86Launch2 NoSymbol XF86Launch2
    +keycode 158 = XF86WWW NoSymbol XF86WWW
    +keycode 159 = XF86DOS NoSymbol XF86DOS
    +keycode 160 = XF86ScreenSaver NoSymbol XF86ScreenSaver
    +keycode 161 = XF86RotateWindows NoSymbol XF86RotateWindows
    +keycode 162 = XF86TaskPane NoSymbol XF86TaskPane
    +keycode 163 = XF86Mail NoSymbol XF86Mail
    +keycode 164 = XF86Favorites NoSymbol XF86Favorites
    +keycode 165 = XF86MyComputer NoSymbol XF86MyComputer
    +keycode 166 = XF86Back NoSymbol XF86Back
    +keycode 167 = XF86Forward NoSymbol XF86Forward
    +keycode 168 =
    +keycode 169 = XF86Eject NoSymbol XF86Eject
    +keycode 170 = XF86Eject XF86Eject XF86Eject XF86Eject
    +keycode 171 = XF86AudioNext NoSymbol XF86AudioNext
    +keycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause
    +keycode 173 = XF86AudioPrev NoSymbol XF86AudioPrev
    +keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject
    +keycode 175 = XF86AudioRecord NoSymbol XF86AudioRecord
    +keycode 176 = XF86AudioRewind NoSymbol XF86AudioRewind
    +keycode 177 = XF86Phone NoSymbol XF86Phone
    +keycode 178 =
    +keycode 179 = XF86Tools NoSymbol XF86Tools
    +keycode 180 = XF86HomePage NoSymbol XF86HomePage
    +keycode 181 = XF86Reload NoSymbol XF86Reload
    +keycode 182 = XF86Close NoSymbol XF86Close
    +keycode 183 =
    +keycode 184 =
    +keycode 185 = XF86ScrollUp NoSymbol XF86ScrollUp
    +keycode 186 = XF86ScrollDown NoSymbol XF86ScrollDown
    +keycode 187 = parenleft NoSymbol parenleft
    +keycode 188 = parenright NoSymbol parenright
    +keycode 189 = XF86New NoSymbol XF86New
    +keycode 190 = Redo NoSymbol Redo
    +keycode 191 = XF86Tools NoSymbol XF86Tools
    +keycode 192 = XF86Launch5 NoSymbol XF86Launch5
    +keycode 193 = XF86Launch6 NoSymbol XF86Launch6
    +keycode 194 = XF86Launch7 NoSymbol XF86Launch7
    +keycode 195 = XF86Launch8 NoSymbol XF86Launch8
    +keycode 196 = XF86Launch9 NoSymbol XF86Launch9
    +keycode 197 =
    +keycode 198 = XF86AudioMicMute NoSymbol XF86AudioMicMute
    +keycode 199 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle
    +keycode 200 = XF86TouchpadOn NoSymbol XF86TouchpadOn
    +keycode 201 = XF86TouchpadOff NoSymbol XF86TouchpadOff
    +keycode 202 =
    +keycode 203 = Mode_switch NoSymbol Mode_switch
    +keycode 204 = NoSymbol Alt_L NoSymbol Alt_L
    +keycode 205 = NoSymbol Meta_L NoSymbol Meta_L
    +keycode 206 = NoSymbol Super_L NoSymbol Super_L
    +keycode 207 = NoSymbol Hyper_L NoSymbol Hyper_L
    +keycode 208 = XF86AudioPlay NoSymbol XF86AudioPlay
    +keycode 209 = XF86AudioPause NoSymbol XF86AudioPause
    +keycode 210 = XF86Launch3 NoSymbol XF86Launch3
    +keycode 211 = XF86Launch4 NoSymbol XF86Launch4
    +keycode 212 = XF86LaunchB NoSymbol XF86LaunchB
    +keycode 213 = XF86Suspend NoSymbol XF86Suspend
    +keycode 214 = XF86Close NoSymbol XF86Close
    +keycode 215 = XF86AudioPlay NoSymbol XF86AudioPlay
    +keycode 216 = XF86AudioForward NoSymbol XF86AudioForward
    +keycode 217 =
    +keycode 218 = Print NoSymbol Print
    +keycode 219 =
    +keycode 220 = XF86WebCam NoSymbol XF86WebCam
    +keycode 221 =
    +keycode 222 =
    +keycode 223 = XF86Mail NoSymbol XF86Mail
    +keycode 224 = XF86Messenger NoSymbol XF86Messenger
    +keycode 225 = XF86Search NoSymbol XF86Search
    +keycode 226 = XF86Go NoSymbol XF86Go
    +keycode 227 = XF86Finance NoSymbol XF86Finance
    +keycode 228 = XF86Game NoSymbol XF86Game
    +keycode 229 = XF86Shop NoSymbol XF86Shop
    +keycode 230 =
    +keycode 231 = Cancel NoSymbol Cancel
    +keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown
    +keycode 233 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp
    +keycode 234 = XF86AudioMedia NoSymbol XF86AudioMedia
    +keycode 235 = XF86Display NoSymbol XF86Display
    +keycode 236 = XF86KbdLightOnOff NoSymbol XF86KbdLightOnOff
    +keycode 237 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown
    +keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp
    +keycode 239 = XF86Send NoSymbol XF86Send
    +keycode 240 = XF86Reply NoSymbol XF86Reply
    +keycode 241 = XF86MailForward NoSymbol XF86MailForward
    +keycode 242 = XF86Save NoSymbol XF86Save
    +keycode 243 = XF86Documents NoSymbol XF86Documents
    +keycode 244 = XF86Battery NoSymbol XF86Battery
    +keycode 245 = XF86Bluetooth NoSymbol XF86Bluetooth
    +keycode 246 = XF86WLAN NoSymbol XF86WLAN
    +keycode 247 =
    +keycode 248 = XF86Display NoSymbol XF86Display
    +keycode 249 =
    +keycode 250 =
    +keycode 251 =
    +keycode 252 =
    +keycode 253 =
    +keycode 254 = XF86WWAN NoSymbol XF86WWAN
    +keycode 255 = XF86RFKill NoSymbol XF86RFKill
     
    @@ -612,7 +402,7 @@ keycode 255 = XF86RFKill NoSym Fix for Matlab.

    -
    export _JAVA_AWT_WM_NONREPARENTING=1
    +
    export _JAVA_AWT_WM_NONREPARENTING=1
     
    @@ -628,31 +418,31 @@ Set DISPLAY for dunst when started with systemd< Merge in defaults and keymaps

    -
    userresources=$HOME/.Xresources
    -usermodmap=$HOME/.Xmodmap
    -sysresources=/etc/X11/xinit/.Xresources
    -sysmodmap=/etc/X11/xinit/.Xmodmap
    +
    userresources=$HOME/.Xresources
    +usermodmap=$HOME/.Xmodmap
    +sysresources=/etc/X11/xinit/.Xresources
    +sysmodmap=/etc/X11/xinit/.Xmodmap
     
    -if [ -f $sysresources ]; then
    -    xrdb -merge $sysresources
    -fi
    +if [ -f $sysresources ]; then
    +    xrdb -merge $sysresources
    +fi
     
    -if [ -f $sysmodmap ]; then
    -    xmodmap $sysmodmap
    -fi
    +if [ -f $sysmodmap ]; then
    +    xmodmap $sysmodmap
    +fi
     
    -if [ -f "$userresources" ]; then
    -    xrdb -merge "$userresources"
    -fi
    +if [ -f "$userresources" ]; then
    +    xrdb -merge "$userresources"
    +fi
     
    -if [ -f "$usermodmap" ]; then
    -    xmodmap "$usermodmap"
    -fi
    +if [ -f "$usermodmap" ]; then
    +    xmodmap "$usermodmap"
    +fi
     
    -
    [ -f ~/.xprofile ] && . ~/.xprofile
    +
    [ -f ~/.xprofile ] && . ~/.xprofile
     
    @@ -665,9 +455,10 @@ Merge in defaults and keymaps Keyboard Options

    -
    # Set repetition keyboard rate
    -xset r rate 200 40 &
    -# Set International US keyboard layout
    +
    # Set repetition keyboard rate
    +xset r rate 200 40 &
    +
    +# Set International US keyboard layout
     setxkbmap -layout us -variant intl -option caps:escape &
     
    @@ -676,24 +467,24 @@ setxkbmap -layout us -variant intl -option caps:escape & Start programs related to display.

    -
    # Screen options
    -xrandr --output eDP1 --mode 1920x1080 --dpi 192 &
    +
    # Screen options
    +xrandr --output eDP1 --mode 1920x1080 --dpi 192 &
     
    -# Set custom wallpaper script
    +# Set custom wallpaper script
     setbg &
     
    -# Hide mouse cursor after x seconds
    -pgrep -xu "$USER" unclutter >/dev/null || \
    -  unclutter --timeout 5 &
    +# Hide mouse cursor after x seconds
    +pgrep -xu "$USER" unclutter >/dev/null || \
    +  unclutter --timeout 5 &
     
    -# Autolock screen after x minutes
    -xautolock -locker "~/scripts/lockscreen.sh" -detectsleep -time 30 -notify 60 -notifier "dunstify --replace=31846 -u critical -t 10000 -- 'Locking Screen' '60 seconds'" &
    +# Autolock screen after x minutes
    +xautolock -locker "~/.local/bin/lockscreen" -detectsleep -time 30 -notify 60 -notifier "dunstify --replace=31846 -u critical -t 10000 -- 'Locking Screen' '60 seconds'" &
     
    -# Redshift
    -pgrep -xu "$USER" redshift >/dev/null || \
    +# Redshift
    +pgrep -xu "$USER" redshift >/dev/null || \
         redshift &
     
    -# Run Picom (compositor)
    +# Run Picom (compositor)
     picom --daemon &
     
    @@ -702,26 +493,33 @@ picom --daemon & Start the applications related to the top bar (polybar + applet).

    -
    # Start Network Management Framework
    -nm-applet &
    +
    # Start Network Management Framework
    +# nm-applet &
     
    -# Start Power Manager
    -xfce4-power-manager &
    +# Bluetooth Manager
    +# blueman-applet &
     
    -# Bluetooth Manager
    -blueman-applet &
    -
    -# Synology Cloud Station Drive
    +# Synology Cloud Station Drive
     synology-drive &
     
    -# Udiskie to automount usb keys
    -pgrep -xu "$USER" udiskie >/dev/null || \
    +# Udiskie to automount usb keys
    +pgrep -xu "$USER" udiskie >/dev/null || \
       udiskie --automount --notify --tray &
     
    +

    +Start other applications +

    -
    mopidy --config ~/.config/mopidy/mopidy.conf >/dev/null 2>&1 &
    +
    # Start Power Manager
    +xfce4-power-manager &
    +
    +# Aria2c daemon
    +aria2c &
    +
    +# Mopidy
    +mopidy --config ~/.config/mopidy/mopidy.conf >/dev/null 2>&1 &
     
    @@ -729,9 +527,9 @@ synology-drive & Finally, run SXHKD for the key bindings.

    -
    # Start sxhkd
    -pgrep -xu "$USER" sxhkd >/dev/null || \
    -  sxhkd -m 1 -c ~/.config/sxhkd/sxhkdrc &
    +
    # Start sxhkd
    +pgrep -xu "$USER" sxhkd >/dev/null || \
    +  sxhkd -m 1 -c ~/.config/sxhkd/sxhkdrc &
     
    @@ -739,7 +537,7 @@ Finally, run SXHKD for the key bindings.

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 11:29

    +

    Created: 2020-05-26 mar. 08:40