Installation
Table of Contents
- Issues to handle
git
- Version Control Systemalacritty
- Terminalbash
- Shelltmux
- Terminal Multiplexer- Fonts
- Syncthing
emacs
andvim
- 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"
~/.mbsyncrc
PassCmd "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 Service
X11 should appear as initialized. echo $XDG_SESSION_TYPE
should showx11
instead oftty
now
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 |