literate-dotfiles/install.org
2022-05-09 10:08:41 +02:00

26 KiB

Installation

TODO [A] Issues to handle

git - Version Control System

Installation:

sudo apt install git

Git Configuration:

  • ~/.gitconfig
  • ~/.gitignore_global

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

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

https://github.com/tmux/tmux

Installation:

sudo apt install tmux

TMUX configuration

Ressources:

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

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

https://gnupg.org/

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

https://github.com/qutebrowser/qutebrowser

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.

TODO Spell Checking

./scripts/dictcli.py install fr-FR
./scripts/dictcli.py install en-US

firefox

xrandr - Monitor Manager

sudo apt install arandr

Xrandr is used in shell scripts (mons could be used as a layer on top of Xrandr). Arandr is a GUI application to manage monitors.

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

http://jonls.dk/redshift/

  sudo apt install redshift

Mail Setup

Link to the mail setup.

mbsync - Synchronize Mailboxes

http://isync.sourceforge.net/ https://wiki.archlinux.org/index.php/Isync

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

msmtp - Send Mails

https://marlam.de/msmtp/

Installation

sudo apt install msmtp

mu - Mail Index, Search and Tagging

neomutt - Mail Client

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

Configuration files:

Ranger

https://github.com/ranger/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.

sxiv - Image viewer

https://github.com/muennich/sxiv https://www.youtube.com/watch?v=GYW9i_u5PYs

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

https://polybar.github.io/

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

https://github.com/dunst-project/dunst https://wiki.archlinux.org/index.php/Dunst

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

https://pwmt.org/projects/zathura/

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 show x11 instead of tty now

inkscape - Graphical Editor

sudo add-apt-repository ppa:inkscape.dev/stable
sudo apt update
sudo apt install inkscape

TODO 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

Find Files

sudo apt install fd-find ripgrep fzf

PDF/Image Utilities

Trash

trash-cli is used to manage the trash. It is integrated with ranger and pcmanFM.

sudo apt install trash-cli

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