---
robots: noindex, nofollow
lang: en-us
breaks: true
---
{%hackmd theme-dark %}
[TOC]
# Dependencies
## Common
```
sudo apt install build-essential libssl-dev exuberant-ctags ncurses-term ack-grep \
silversearcher-ag fontconfig imagemagick libmagickwand-dev qtbase5-dev qt5-qmake \
software-properties-common vim-gtk3 curl git sqlite3 libsqlite3-dev tk-dev \
texinfo texlive texlive-fonts-extra libgtk2.0-dev libudunits2-dev libgdal-dev \
libmagick++-dev libpoppler-cpp-dev libtesseract-dev libleptonica-dev \
ca-certificates gnupg lsb-release gconf-service gconf-service-backend \
libqt5printsupport5 libqt5xml5 libqt5sql5 libqt5serialport5 libqt5sql5-sqlite \
gconf2-common libc++1 libc++1-14 libc++abi1-14 libgconf-2-4 openjdk-11-jdk \
libmediainfo0v5 libmms0 libtinyxml2-9 libunwind-14 libzen0v5 adb gcc make -y
```
## Optional
```
sudo apt install flameshot goldendict zsh tilix htop backintime-common \
fortune cheese msttcorefonts neovim kdeconnect libgit2-1.1 libgit2-dev \
qttools5-dev-tools -qq -y
```
# Software
```
cd ~/Downloads
# Discord + Dropbox + Google Chrome + MegaSync + OpenBoard + VirtualBox + VScode + libssl
wget https://dl.discordapp.net/apps/linux/0.0.21/discord-0.0.21.deb \
https://linux.dropbox.com/packages/ubuntu/dropbox_2020.03.04_amd64.deb \
https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
https://mega.nz/linux/repo/xUbuntu_22.04/amd64/megasync-xUbuntu_22.04_amd64.deb \
https://github.com/OpenBoard-org/OpenBoard/releases/download/v1.7.1/openboard_ubuntu_22.04_1.7.1_amd64.deb\
https://download.virtualbox.org/virtualbox/7.0.2/virtualbox-7.0_7.0.2-154219~Ubuntu~jammy_amd64.deb \
https://az764295.vo.msecnd.net/stable/d045a5eda657f4d7b676dedbfa7aab8207f8a075/code_1.72.2-1665614327_amd64.deb \
http://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.19_amd64.deb
sudo dpkg -i *.deb
# Remmina
flatpak install -y flathub org.remmina.Remmina com.adobe.Flash-Player-Projector
# Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu jammy stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo groupadd docker && sudo usermod -aG docker $USER && newgrp docker
# Miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
echo "export PATH=$HOME/miniconda3/bin:$PATH" >> $HOME/.bashrc
echo "export R_HOME=/root/miniconda3/envs/renv/lib/R" >> $HOME/.bashrc
echo ".libPaths(c(.libPaths()[grep('/envs/', .libPaths())], .libPaths()[-grep('/envs/', .libPaths())]))" > $HOME/.Rprofile
$HOME/miniconda3/bin/conda update -n base -y -c defaults conda
$HOME/miniconda3/bin/conda config --add channels defaults
$HOME/miniconda3/bin/conda config --add channels bioconda
$HOME/miniconda3/bin/conda config --add channels conda-forge
$HOME/miniconda3/bin/conda install -n base -y mamba
$HOME/miniconda3/bin/mamba env create -f packages_Python.yml
$HOME/miniconda3/bin/mamba env create -f packages_R.yml
# avoid conda complains about 'shell not initialized'
source ""$HOME/miniconda3/etc/profile.d/conda.sh"
rm Miniconda3-latest-Linux-x86_64.sh
python3 -m ipykernel install --user --name <env_name> --display-name "<env_name> (py x.y)"
# OBS + Telegram + GIMP
flatpak install flathub com.obsproject.Studio org.telegram.desktop org.darktable.Darktable org.videolan.VLC \
org.gimp.GIMP org.clementine_player.Clementine fr.handbrake.ghb org.kde.kdenlive \
org.soundconverter.SoundConverter org.zotero.Zotero
# Remove downloaded files
rm *.deb
```
# Zsh
```
cd ~
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/Hack.tar.xz && \
tar -xf Hack.tar.xz && rm Hack.tar.xz
mkdir ~/.fonts && mv HackNerdFont* ~/.fonts && fc-cache -fv
mkdir -p $HOME/.config/tilix/schemes/
cat << EOF > $HOME/.config/tilix/schemes/tilix_colors.json
{
"background-color": "#2E3436",
"badge-color": "#FFFFFF",
"bold-color": "#FFFFFF",
"comment": "",
"cursor-background-color": "#000000",
"cursor-foreground-color": "#FFFFFF",
"foreground-color": "#FFFFFF",
"highlight-background-color": "#000000",
"highlight-foreground-color": "#FFFFFF",
"name": "bambino",
"palette": [
"#FFFFFF",
"#FF5252",
"#8AE234",
"#FCE94F",
"#42A5F5",
"#BA22CD",
"#00ACC1",
"#888A85",
"#708284",
"#FF5252",
"#8AE234",
"#FCE94F",
"#EF2929",
"#BA22CD",
"#00ACC1",
"#F5F5F5"
],
"use-badge-color": false,
"use-bold-color": false,
"use-cursor-color": false,
"use-highlight-color": false,
"use-theme-colors": false
}
EOF
```
# Add alias (.zshrc)
```
# Path to your oh-my-zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="powerlevel9k/powerlevel9k"
POWERLEVEL9K_MODE="nerdfont-complete"
#POWERLEVEL9K_DISABLE_RPROMPT=true
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(virtualenv anaconda)
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=""
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="λ "
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_mint_icon dir vcs)
POWERLEVEL9K_CUSTOM_MINT_ICON="echo "
POWERLEVEL9K_CUSTOM_MINT_ICON_BACKGROUND=010
POWERLEVEL9K_CUSTOM_MINT_ICON_FOREGROUND=015
# Add wisely, as too many plugins slow down shell startup.
plugins=(
git
yarn
web-search
jsontools
docker
virtualenv
)
source $ZSH/oh-my-zsh.sh
# enable wildcards usage
unsetopt nomatch
autoload -Uz zcalc
alias Autoremove='sudo apt autoremove && sudo apt-get autoclean'
alias Backup='sudo rsync -avPuorpESHAX --delete /* /media/$USER/Backup/ --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found/*","$HOME/VirtualBox\ VMs/*"}'
alias Desligar_apos='sudo shutdown -h -P'
alias GIF='convert -resize 20% -delay 120 -loop 0 *.png animated.gif'
alias Info='lsb_release -a & systemd-analyze blame & systemd-analyze critical-chain'
alias Install='sudo apt-get install'
alias MP3='/usr/local/bin/youtube-dl -x --extract-audio --audio-quality 320k --audio-format mp3'
alias Memory_clean='sudo sysctl -w vm.drop_caches=3 && sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches'
alias Pacote='figlet RGDCtools'
alias Reboot='sudo reboot'
alias Remove='sudo apt remove'
alias Search='sudo apt-cache search'
alias Size='du -hs .[!.]* * | sort -g'
alias Update='sudo apt update --fix-missing'
alias Upgrade='sudo apt upgrade'
alias alias_config='cd ~ && xed .zshrc'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --colour=auto'
alias monitoroff='xset dpms force off'
alias poweroff='sudo shutdown -h now'
alias qwe='cd ..'
alias root=''
alias GerarQR='qrencode -o google.png 'http://google.com''
alias LerQR='zbarimg codigoqr.png'
alias Hello='Update -y && Upgrade -y && Autoremove -y && flatpak update -y'
alias DistroInfo='cat /etc/*-release && cat /proc/version && lsb_release'
alias VPN_Unicamp='cd ~/Downloads/ && sudo openvpn --config client.ovpn'
alias Baixar='wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0 -cv'
alias Jupyter="jupyter notebook"
alias PublicIP='curl ipinfo.io/ip'
alias PDF_text='abiword --to=doc'
alias PDF_all='soffice --infilter="writer_pdf_import" --convert-to doc'
alias DOOM='prboom-plus -iwad doom.wad'
alias DOOM2='prboom-plus -iwad doom2.wad'
alias ogg2mp3='soundconverter -b -m "mp3" -s ".mp3"'
alias bmp2jpg='mogrify -format jpg -quality 100'
alias MontagePNG='montage -mode concatenate -tile 3x2 *.jpg -transpose -resize 1024x1024 montage.jpg'
alias Overlay='convert background.png overlap.png -geometry +0+0 -composite montage.png'
alias MP3Playlist='/usr/local/bin/youtube-dl -ciw --extract-audio --audio-quality 320k -o "%(title)s.%(ext)s" --playlist-items 1-100'
alias MP3Extract20sec='ffmpeg $(/usr/local/bin/youtube-dl -g "www" | sed "s/.*/-ss 19:44 -i &/") -map 1:a -t 03:20 -c:a aac -c copy out.opus'
alias concate="awk 'FNR==1&&NR!=1{print""}1'"
alias inkscape='snap run inkscape'
alias PublicIP='curl https://ipinfo.io/ip'
alias Vcat='for file in $(ls files*) ; do cat $file ; echo ; done > files.out'
alias pdfMerge='gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile=finished.pdf'
alias pdfShrink72='gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=small.pdf'
alias pdfShrink150='gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=small2.pdf'
alias WIN_serial='sudo xxd /sys/firmware/acpi/tables/MSDM'
alias NemoActions='cd $HOME/.local/share/nemo/actions'
alias fixBrokenPack='sudo apt update --fix-missing && sudo apt-get --fix-broken install && sudo dpkg --configure -a && sudo apt install -f'
alias PNG2TIFF='for f in *.png; do convert "$f" "${f%%.*}.tiff"; done'
alias SVG2PNG='for f in *.svg; do inkscape -d 300 -o "${f%%.*}.png" "$f"; done'
alias VPN_Unicamp='sudo openvpn --config ~/Downloads/client.ovpn'
alias memory_freq='sudo lshw -C memory'
alias Box_to='rclone sync -P --transfers 30 --checkers 16 --contimeout 60s --timeout 300s --retries 3 --low-level-retries 10 --stats 1s "$HOME/Box" "box:"'
alias merge_pdf='convert *.png merge.pdf'
alias merge_pdf20='convert -quality 20 -compress jpeg in.pdf out.pdf'
alias Droidcam='cd ~/droidcam && sudo ./install-client && sudo ./install-video'
alias disk_sizes='df -h -x devtmpfs -x tmpfs'
alias filesystem_struct='lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT'
fortune
#>>> conda initialize >>>
#!! Contents within this block are managed by 'conda init' !!
__conda_setup="$('$HOME/miniconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "$HOME/miniconda3/etc/profile.d/conda.sh" ]; then
. "$HOME/miniconda3/etc/profile.d/conda.sh"
else
export PATH="$HOME/miniconda3/bin:$PATH"
fi
fi
unset __conda_setup
#<<< conda initialize <<<
```
# Tilix config
* check "Zoom the terminal using...";
* choose dark theme;
* Font Hack Nerd 14;
* check "Run command as a login shell";
* Color scheme "Bambino";
# Create keyboard shotcuts
* gnome-system-monitor
> ctrl+shift+esc
* flameshot gui
> ctrl+shift+print
* tilix
> ctrl+alt+t
## Remove ctrl+e shortcut from ibus 'Emoji annotation'
# SSH config to prevent broken pipe
```
cat << EOF >> ~/.ssh/config
Host *
ServerAliveInterval 120
EOF
```
# Change default keyboard layout
```
sudo nano /usr/share/X11/xkb/symbols/br
# add in "Portuguese (Brazil)"
key <AE11> { [ minus, underscore, backslash, bar ] };
# restart the machine
```
# Grub changes
```
sudo nano /etc/default/grub
# change two lines
#GRUB_TIMEOUT=10
GRUB_TIMEOUT=3
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT=""
# Then run
sudo update-grub2
```
# Droidcam: your phone as webcam
```
sudo apt install linux-headers-`uname -r`
cd /tmp/
wget -O droidcam_latest.zip https://files.dev47apps.net/linux/droidcam_2.0.0.zip
# sha1sum: 7b213dcf0bb4ac20d17007f52192c7914b10ed3f
unzip droidcam_latest.zip -d droidcam
cd droidcam
sudo ./install-client && sudo ./install-video
```
# Fingerprint reader from [this link](https://blog.horner.tj/mint-fingerprint-auth-x1c7/)
```
sudo apt install libpam-fprintd
sudo pam-auth-update # 'check Fingerprint authentication'
fprintd-enroll -f [finger]
```
`[finger]` can be one of:
* left-thumb
* left-index-finger
* left-middle-finger
* left-ring-finger
* left-little-finger
* right-thumb
* right-index-finger
* right-middle-finger
* right-ring-finger
* right-little-finger
# If Java is **really** needed
```
# where "X" is the desired java version
sudo apt install openjdk-X-jdk
```
## Switch java and javac versions
`sudo update-alternatives --config java`
or
`sudo update-alternatives --config javac`
# Fix Windows and Linux Showing Different Times When Dual Booting
`timedatectl set-local-rtc 1 --adjust-system-clock`
Then check if `RTC in local TZ:` is `yes`
`timedatectl`
# Peek: Record screen area as a gif
```
sudo add-apt-repository ppa:peek-developers/stable
sudo apt-get update
sudo apt-get install peek
```
# Wacom config
```
xsetwacom set "Wacom Intuos S Pad pad" Button 1 key +CTRL z &&
xsetwacom set "Wacom Intuos S Pad pad" Button 2 key e &&
xsetwacom set "Wacom Intuos S Pad pad" Button 3 key b &&
xsetwacom set "Wacom Intuos S Pad pad" Button 8 key v
```
# Latex setup
## Instalation
`sudo apt install texlive-latex-base texlive-latex-extra latexmk`
For complete install (This may take some time). If stuck, pressing the Enter key a few times acts as a "kick" to the installer process, allowing it to continue. While it seems like a bizarre solution, it's a well-documented bug/quirk in some versions of the TeX Live installer.
`sudo apt install texlive-full`
## Folder structure
```
touch main.tex bibliography.bib
mkdir chapters figures tables styles
cd chapters
touch introduction.tex methods.tex results.tex discussion.tex conclusion.tex
```
## Create a makeFile
```
cat << 'EOF' > Makefile
# Makefile for LaTeX project build
MAIN = main
PDFLATEX = pdflatex
BIBTEX = bibtex
all: $(MAIN).pdf
$(MAIN).pdf: $(MAIN).tex bibliography.bib
$(PDFLATEX) $(MAIN).tex
$(BIBTEX) $(MAIN)
$(PDFLATEX) $(MAIN).tex
$(PDFLATEX) $(MAIN).tex
clean:
rm -f $(MAIN).aux $(MAIN).bbl $(MAIN).blg $(MAIN).log $(MAIN).out $(MAIN).toc
EOF
```
Run make to build the PDF and make clean to remove auxiliary files.