Installation
Table of Contents
- Issues to handle
 git- Version Control Systemalacritty- Terminalbash- Shelltmux- Terminal Multiplexer- Fonts
 - Syncthing
 emacsandvim- Text Editors- SSH setup
 - GnuPG
 rofi- Application Launcherpass- Password Managerqutebrowser- Browserxrandr- Monitor Manager- Music Setup
 - Movies
 - Contact Manager
 redshift- Mail Setup
 ranger=/=pcmanfm- File Managersxiv- Image viewersxhkd- HotKey Manageri3- Windows Managerpolybar- Top Barpicom- Compositordunst- Notification Manager- LaTeX
 - Mathematical Software
 - Calendar
 zathura- PDF Reader- Display Manager
 inkscape- Graphical Editorwireguard- VPN- Others
 - Printer
 - List of all the install programs
 
Issues to handle
git - Version Control System
alacritty - Terminal
Alacritty is a very nice keyboard-centric terminal.
It can be installed like so:
sudo add-apt-repository ppa:aslatter/ppa sudo apt install alacritty
Its configuration file is described here.
| Command | Usage | 
|---|---|
ctrl-shift-x | 
activate url hints mode | 
ctrl-shift-c | 
copy to CLIPBOARD | 
ctrl-shift-v | 
paste from CLIPBOARD | 
ctrl-shift-space | 
start selection mode | 
ctrl + | 
increase font size | 
ctrl - | 
decrease font size | 
bash - Shell
https://wiki.archlinux.org/index.php/Bash
Installation:
sudo apt install bash bash-completion zsh
Bash configuration:
~/.bashrc~/.bash_profile~/.config/bash/~/.profile
tmux - Terminal Multiplexer
Installation:
sudo apt install tmux
TMUX configuration
Ressources:
- https://github.com/gpakosz/.tmux
 - https://gist.github.com/MohamedAlaa/2961058
 - https://blog.bugsnag.com/tmux-and-vim/
 - https://github.com/tmux-plugins/tmux-resurrect
 - https://github.com/rothgar/awesome-tmux
 - https://thoughtbot.com/upcase/tmux
 
| Command | Usage | 
|---|---|
ctrl-spc | 
Prefix | 
c | 
New pane | 
/, - | 
Split Vertically/Horizontally | 
s | 
Change session | 
p, n | 
Previous/Next Pane | 
ctrl-h,j,k,l | 
Move between windows | 
Fonts
My font of choice is nerd-fonts-hack which can be installed as so:
git clone --depth 1 https://github.com/ryanoasis/nerd-fonts cd nerd-fonts ./install.sh Hack
For emojis, use:
sudo apt install fonts-noto-color-emoji
Default font used:
- Monospace Font: 
Hack Nerd Font Mono - Serif Font: 
Hack Nerd Font - Sans Font: 
Hack Nerd Font 
To list all fonts available:
fc-list
emacs and vim - Text Editors
Neovim
I use Neovim for all the small edits.
Installation:
sudo apt install neovim
The Neovim configuration can be found here.
Simlink the Vim config to Neovim:
mkdir ~/.config/nvim ln -s ~/.vimrc ~/.config/nvim/init.vim
Then install the plugin manager plug:
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
And to install/setup all the plugins:
nvim +PlugInstall
nvim +UpdateRemotePlugins
Emacs
I use Emacs and the Doom framework.
Install Emacs:
sudo snap install emacs --edge --classic
And then the Doom framework:
git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d
~/.emacs.d/bin/doom install
The Emacs configuration can be found here.
SpellCheck with Aspell:
sudo apt install aspell aspell-en aspell-fr
SSH setup
Generate a new SSH key:
ssh-keygen -t rsa -b 4096 -C "dehaeze.thomas@gmail.com"
Start the ssh-agent in the background:
eval "$(ssh-agent -s)"
Add the SSH key to the ssh-agent:
ssh-add ~/.ssh/id_rsa
GnuPG
Install the gnupg package:
sudo apt install gnupg
Create a key pair:
gpg --full-gen-key
To configure the gpg-agent to cache the passphrase, edit the following file ~/.gnupg/gpg-agent.conf:
default-cache-ttl 60480000 max-cache-ttl 60480000
Install Gnome-Keyring to automatically unlock the GnuPG keys:
sudo apt install gnome-keyring
rofi - Application Launcher
Rofi is a very nice alternative to dmenu.
Installation:
sudo apt install dmenu rofi
To be able to run sudo commands with rofi (github issue), the command sudo -A can be used: it opens a rofi prompt to ask for the password.
For that to work, we need to add the following code to ~/.profile:
export SUDO_ASKPASS=~/.local/bin/askpass-rofi
The askpass-rofi script is:
#!/bin/sh rofi -dmenu \ -password \ -no-fixed-num-lines \ -p "$(printf "$1" | sed s/://)"
pass - Password Manager
https://www.passwordstore.org/
Installation:
sudo apt install pass
git clone https://git.tdehaeze.xyz/tdehaeze/pass.git ~/.password-store
Gui Manager: qtpass
sudo apt install qtpass
Integration with Rofi: rofi-pass
cd ~/.local/soft/ git clone https://github.com/carnager/rofi-pass cd rofi-pass sudo make install
Then we can add a shortcut to rofi-pass on i3 config.
Integration with Git: pass-git-helper
sudo apt install pass-git-helper
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:
[github.com*] target=github.com/tdehaeze
Then, add the credential helper on the git configuration file ~/.gitconfig and add the default username for the repositories adresses.
[credential]
    helper = !pass-git-helper $@
[credential "https://github.com"]
    username = tdehaeze
Integration with other programs
Integrate pass in other programs is usually very easy, here are few examples:
~/.msmtprc:passwordeval "pass email/dehaeze.thomas@gmail.com"
~/.mbsyncrcPassCmd "pass email/dehaeze.thomas@gmail.com"
Alternative - Bitwarden
Bitwarden https://github.com/bitwarden/cli
yay -Ss bitwarden-bin bitwarden-cli-bin
qutebrowser - Browser
Installation
mkdir ~/.local/soft cd ~/.local/soft git clone https://github.com/qutebrowser/qutebrowser.git cd qutebrowser sudo apt install --no-install-recommends git ca-certificates python3 python3-venv asciidoc libglib2.0-0 libgl1 libfontconfig1 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-shape0 libxcb-xfixes0 libxcb-xinerama0 libxcb-xkb1 libxkbcommon-x11-0 libdbus-1-3 libyaml-dev gcc python3-dev libnss3 python3 scripts/mkvenv.py
Then it can be launched using file:~/.config/literate-dotfiles/binaries-private.org::#qutebrowser
~/.local/soft/qutebrowser/.venv/bin/python3 -m qutebrowser
And upgraded with:
cd ~/.local/soft/qutebrowser/
mkvenv.py --update
View Pdf inside qutebrowser with pdfjs
Installation
sudo apt install pdf.js-common
Usage
When opening a pdf file on qutebrowser, you’ll be ask for options:
| Command | Usage | 
|---|---|
<return> | 
Download the file | 
Ctrl-x | 
Download and open | 
Ctrl-p | 
Open with pdf.js | 
Alt-y | 
Yank the url | 
Integration with Pass: the password manager
Add the key-binding on ~/.config/qutebrowser/config.py
config.bind(',p', 'spawn --userscript password_fill')
The password_fill script can be found on github.com.
It is configured using the ~/.config/qutebrowser/password_fill_rc file.
Spell Checking
./scripts/dictcli.py install fr-FR ./scripts/dictcli.py install en-US
firefox
xrandr - Monitor Manager
Music Setup
pulseaudio - Sound Server
https://wiki.archlinux.org/index.php/PulseAudio
Installation:
sudo apt install pulseaudio pulseaudio-module-bluetooth
If sound is not working, should run pulseaudio --kill to kill the deamon and then pulseaudio --daemonize to run it again.
https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Running/
pavucontrol - Sound Manager
pavucontrol is used as a sound manager:
  sudo apt install pavucontrol
mopidy - Audio Server
https://github.com/mopidy/mopidy https://medium.com/@theos.space/using-mopidy-with-spotify-and-ncmpcpp-44352f4a2ce8
sudo apt install mopidy
sudo apt install python3-pip
python3 -m pip install --use mopidy-jellyfin
To update local files:
mopidy local scan
If mopidy is used, MPD should be disabled. (systemctl disable --user mpd.service)
ncmpcpp - MPD Client
https://wiki.archlinux.org/index.php/Ncmpcpp
Installation:
sudo apt install ncmpcpp
The main config is located here: ~/.ncmpcpp/config.
The key bindings can be configured here: ~/.ncmpcpp/bindings.
Movies
mpv - Media Player
Installation:
  sudo apt install mpv
The configuration is set in /.config/mpv/input.conf.
Contact Manager
khard - Google Conctacts
https://github.com/scheibler/khard
yay -Ss khard
This is the command line interface for contact management.
Contact synchronization: Vdirsyncer is used for contact synchronization with Google.
To search with Khard: khard <conctact-name>
mu - Index Emails
sudo apt install maildir-utils
This looks for contacts in all indexed emails.
mu cfind <name>
redshift
  sudo apt install redshift
Mail Setup
Link to the mail setup.
mbsync - Synchronize Mailboxes
Installation
sudo apt install isync
Configuration
~/.mbsyncrc
Automation using systemd
Retreive New mails
checkmail~/.config/systemd/user/checkmail.service~/.config/systemd/user/checkmail.timer
systemctl --user enable checkmail.timer systemctl --user start checkmail.timer
Synchronize all the mailboxes
~/.config/systemd/user/syncmail.service~/.config/systemd/user/syncmail.timer
systemctl --user enable syncmail.timer systemctl --user start syncmail.timer
mu - Mail Index, Search and Tagging
neomutt - Mail Client
Installation
sudo apt install neomutt
Display html mails
  sudo apt install w3m
Open Url from mail
  sudo apt install urlview
Notification system
A script (checkmail) is used to retreive new mails and use notify=send is there are new received mails.
ranger=/=pcmanfm - File Manager
Ranger
Installation
sudo apt install ranger
Configuration
The configuration file is ~/.config/ranger/rc.conf.
Display pdf
All the display of the files are defined in ~/.config/ranger/scope.sh.
It seems that Ranger is not working well with Termite. The screen is not refreshing after viewing one image (Github Issue).
It works better with Urxvt.
GUI File Manager: pcmanfm
sxiv - Image viewer
Installation
sudo apt install sxiv
Open Gif
sxiv -a file.gif
Cheatsheet
| Command | Usage | 
|---|---|
-t | 
Start in Thumbmail mode | 
f | 
Toggle fullscreen | 
Return | 
Switch to thumbmail mode | 
<, > | 
Rotate the image | 
\vert, _ | 
Flip the image | 
n, p | 
Next, Previous image | 
sxhkd - HotKey Manager
sudo apt install sxhkd
Configuration file: SXHKD.
i3 - Windows Manager
Link to the documentation
Installation
sudo add-apt-repository -y ppa:regolith-linux/stable sudo apt install i3-gaps
Configuration
~/.i3/config
polybar - Top Bar
Link to the documentation.
Installation
cd ~/.local/soft git clone https://github.com/jaagr/polybar.git cd polybar # Install necessary sudo apt install build-essential git cmake cmake-data pkg-config python3-sphinx python3-packaging libuv1-dev libcairo2-dev libxcb1-dev libxcb-util0-dev libxcb-randr0-dev libxcb-composite0-dev python3-xcbgen xcb-proto libxcb-image0-dev libxcb-ewmh-dev libxcb-icccm4-dev # Install optional sudo apt install libxcb-xkb-dev libxcb-xrm-dev libxcb-cursor-dev libasound2-dev libpulse-dev i3-wm libjsoncpp-dev libmpdclient-dev libcurl4-openssl-dev libnl-genl-3-dev ./build.sh
picom - Compositor
https://wiki.archlinux.org/index.php/Picom
Link to the documentation.
Installation
sudo apt install picom
Configuration
~/.config/picom/picom.conf
Automatic run as daemon
Compton is run from .xprofile config in the background:
picom --daemon
dunst - Notification Manager
Installation
sudo apt install dunst notify-send
Configuration
~/.config/dunst/dunstrc
Usage
notify-send "AppName" "Message"
The number --replace can be used with an ID to merge notifications from the
same application for instance.
LaTeX
Installation
sudo apt install texlive-full
Every custom class or packages can be put under ~/.local/share/texmf/tex/latex/local/ folder.
In order for LaTeX to be aware of new packages/classes, run sudo texhash each time a new custom package is added.
Mathematical Software
Insect
https://github.com/sharkdp/insect
Installation
  sudo apt install insect
| Command | Usage | 
|---|---|
3 m/s to km/h | 
Convert Unit | 
Matlab
https://wiki.archlinux.org/index.php/MATLAB#Installation
Link to the configuration.
Installation
  sudo apt install matlab
If there is a problem when opening a Simulink file, check the solution here.
SageMath
http://www.sagemath.org/ https://wiki.archlinux.org/index.php/SageMath
Installation
  sudo apt install sagemath
Run sage -n jupyter to run jupyter notebooks
Python and Jupyter-notebook
Calendar
Link to configuration
vdirsyncer - Sync calendars
https://github.com/pimutils/vdirsyncer
Installation:
sudo apt install vdirsyncer python-requests-oauthlib-doc
sudo pip install requests-oauthlib
| Command | Usage | 
|---|---|
vdirsyncer sync | 
Synchronize | 
Setup the google_calendar:
vdirsyncer discover radicale_calendar
And start the systemd timer that automatically synchronize the calendars;
systemctl --user enable --now vdirsyncer.timer
To check the status of the service:
systemctl --user status vdirsyncer.service
khal - Calendar Client
https://github.com/pimutils/khal
Installation:
sudo apt install khal
Import ICS files:
khal import even.ics
zathura - PDF Reader
Installation
sudo apt install zathura
Then add dependecies to view specific files:
sudo apt install zathura-pdf-mupdf zathura-djvu zathura-ps zathura-cb
Configuration
~/.config/zathura/zathurarc
Cheatsheet
| Command | Usage | 
|---|---|
p | 
Print the current pdf | 
tab | 
Show the outline | 
r | 
Reload | 
J/K | 
Next/previous page | 
H/L | 
Zoom in/out | 
a | 
Fit height | 
s | 
Fit width | 
D | 
Double page | 
f | 
Follow link | 
i | 
Night Mode | 
<n>gg | 
Go to page n | 
mm | 
Mark current location to m | 
'm | 
Goto location m | 
Multi-monitor pdf presentation - pdfpc
https://github.com/pdfpc/pdfpc
pdfpc is a great tool for showing pdf presentations. It support:
- screen splitting
 - support for videos in pdf presentations
 - support for notes
 - support for annotations
 
Installation
  sudo apt install pdfpc
Video support
  sudo apt install gst-plugins-ugly gst-plugins-good gst-plugins-base-libs gst-plugins-base gst-plugins-bad gst-libav
Usage
pdfpc filename.pdf
Display Manager
Before, I was using lightDM, but a single tty is enough.
However, to make tools like Anydesk or Teamviewer to work:
Add “type=x11” in /etc/pam.d/system-login:
  -session optional pam_systemd.so type=x11
- When executing 
loginctl session-status | grep ServiceX11 should appear as initialized. echo $XDG_SESSION_TYPEshould showx11instead ofttynow
inkscape - Graphical Editor
sudo add-apt-repository ppa:inkscape.dev/stable sudo apt update sudo apt install inkscape
wireguard - VPN
sudo apt install wireguard-tools
Others
Things to install
sudo apt install xwallpaper mpc mpv maim sudo apt install freerdp2-x11 xsel xclip xdotool sudo apt install unclutter xautolock redshift sudo apt install atool unrar p7zip
Diff so fancy
sudo add-apt-repository ppa:aos1/diff-so-fancy sudo apt-get update sudo apt install diff-so-fancy
cd ~/.local/bin wget https://raw.githubusercontent.com/carnager/rofi-pass/master/rofi-pass chmod +x rofi-pass
For image preview in ranger:
sudo pip3 install ueberzug
maim=/=flameshot - Take Screenshots
sudo apt install maim flameshot
Find Files
sudo apt install fd-find ripgrep fzf
PDF/Image Utilities
- https://github.com/dawbarton/pdf2svg
 - https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
 - https://github.com/Airblader/unclutter-xfixes
 
sudo apt install pdf2svg pdftk unclutter pdfarranger imagemagick
Trash
trash-cli is used to manage the trash.
It is integrated with ranger and pcmanFM.
sudo apt install trash-cli
Nice other programs
- https://github.com/leonwind/cli2cloud
 - Gnu Make alternative https://github.com/taskctl/taskctl
 
Printer
https://wiki.archlinux.org/index.php/CUPS Web based administration: http://localhost:631/
To install the ESRF printer:
lpadmin -p ctb127c1u -v ipp://cups.esrf.fr/printers/ctb127c1u -E
system-config-printer
Check the queue
lpq lpq -a # on all queues
Clear the queue
lprm # remove last entry only lprm - # remove all entries
Print a file
lpr -P printer_name filename.pdf
List available printers
lpstat -a
Stats about the printer
lpstat -p printer_name
List of all the install programs
Mutt
neomutt | 
Teaching an Old Dog New Tricks | 
msmtp | 
SMTP client that can be used as an SMTP plugin for Mutt | 
isync | 
Synchronize a maildir with an IMAP server | 
vdirsyncer | 
Synchronize calendars and contacts | 
abook | 
Address book with mutt support | 
urlview | 
URL extractor/launcher | 
w3m | 
Pager/text based browser | 
lynx | 
Text mode web browser | 
lbdb | 
Little brother’s database for the mutt mail reader | 
mu | 
Tool for searching e-mail messages stored in the maildir-format | 
ripmime | 
Extract attachments out of MIME encoded email packages | 
shared | 
mime-info - Database of common MIME types | 
File Management
grep | 
GNU grep, egrep and fgrep | 
pdfgrep | 
Search PDFs for strings matching a regular expression | 
the_platinum_searcher | 
Multi-platform code-search similar to ack and ag | 
the_silver_searcher | 
Code-search similar to ack | 
fdupes | 
Identify or delete duplicate files | 
findutils | 
Collection of GNU find, xargs, and locate | 
ranger | 
File browser | 
vifm | 
Ncurses based file manager with vi like keybindings | 
tree | 
Display directories as trees (with optional color/HTML output) | 
p7zip | 
7-Zip (high compression file archiver) implementation | 
unrar | 
Extract, view, and test RAR archives | 
atool zip | 
script for managing file archives of various types | 
File Downloader
wget | 
Internet file retriever | 
htop | 
Improved top (interactive process viewer) | 
httpie | 
User-friendly cURL replacement (command-line HTTP client) | 
curl | 
Get a file from an HTTP, HTTPS or FTP server | 
Utils
binutils | 
GNU Binary Utilities | 
coreutils | 
GNU File, Shell, and Text utilities | 
gnome | 
doc-utils - Documentation utilities for the GNOME project | 
moreutils | 
Collection of tools that nobody wrote when UNIX was young | 
A trier
asciinema | 
Terminal session recorder | 
automake | 
tool for automatically generating Makefile | 
cmake | 
Cross-platform make | 
cputhrottle | 
Limit the CPU usage of a process | 
ctags | 
Reimplementation of ctags | 
gdb | 
GNU debugger | 
ghostscript | 
Interpreter for PostScript and PDF | 
go | 
Open source programming language to build simple/reliable/efficient software | 
hugo | 
Configurable static site generator | 
markdown | 
Text-to-HTML conversion tool | 
pandoc | 
Swiss-army knife of markup format conversion | 
uni | 
Query the Unicode database from the commandline |