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