FYI: makepkg -si is functions internally to do both of these following command makepkg -s and sudo pacman -U myfile.pkg.tar.zst.

FYI: config files : sahilrajput03/config FYI: Other people’s config files:,,,

Add a binary to dmenu list of executables?

Simply move the binary to /usr/bin directory or you can make a symlink in the /usr/bin directory as well.

sudo ln -s /home/array/test/ /usr/bin/

Install insomnia - a postman’s opensource alternative

# Download official appImage version of the release from its official page @
# now you can simply add this to /usr/bin directory to be available to all users.

Best mail servers linux


installed ngrok

yay -s ngrok

# Usage:
ngrok http 3002
# fyi: you may use `ngrokinfo` as its my alis to know about ngrok anytime.

installed skype

yay -S skypeforlinux-stable-bin

failed to update system with sudo pacman -Syyu due to oudated pgp keys?


pacman -Sy archlinux-keyring

# Now you can run:
sudo pacman -Syyu

Installed boomer for screen magnification

yay -S boomer-git

Install upwork on archlinux

Source: Comment from aur page:

# Downlaod '.deb' file from official upwork site coz upwork only allows to download for loggedinusers
# from:

cd upwork
mv ~/Downloads/upwork_*_*.deb .
makepkg -si

# Now you need to fix the segmentation fault error
# Just make a bash function:
runUpwork (){
	cd /opt/Upwork
	air ./upwork 
# fyi: air my another function that runs anytihng detached from current shell, yo!!

installed lsusb

sudo pacman -S usbutils

# Usage:

install macos-simple-kvm

IMPORTANT: USE ctrl+alt+g to toggle mouse into/out from qemu screen.

IMPORTANT: USE ctrl+alt+f to toggle fullscreen.

# Youtube:
# Article:

# Source Project:
cd macOS-Simple-KVM

# Download (500M) and uncompress it to `BaseSystem.img` (2G)

# Create disk image (20G) is minimum as they say in FAQ's:
# This creates a file `MyDisk.qcow2` (of size 196K) in current directory.
# HELP: Use `Enter` to press the ```Boot Install Macos``` BUTTON. ALSO IN DISK UTILITY, You need to format the disk.
qemu-img create -f qcow2 MyDisk.qcow2 28G
# FYI: For 25.21G is mimimum requirement for `catalina - macos` ~Sahil

## Addbelow lines to file (remove `#` though from each line):
#    -drive id=SystemDisk,if=none,file=MyDisk.qcow2 \
#    -device ide-hd,bus=sata.4,drive=SystemDisk \

### SRC:
## Also add memory usage to
#    -m 6G \
## add cpu cores as well by chaing below line
#     -smp 4,cores=2 \
# to...
#     -smp cores=4,threads=8,sockets=1 \

# Run to start macos installation (need to use this to run macos everytime):
# FYI: `Clover` is used as boot manager for macos-simple-kvm and other hackintoshes as well.

# While installation
# 1. You need to go to `Disk Utility` and select the largest disk (which corresponds to disk file we created earlier with `qemu-img` command)
# 2. Click on `Erase` and and choose some name for disk `disk1` and choose format as `APFS` and click on `Erase` now.
# 3. Now go back from `Disk Utility` and choose `Reinstall macos`, yo!! It will simply install!

- increasing `Memory Allocation`
- increasing `number of `CPU cores`
- increasing `number of threads cpu can handle`
- increasing `screen resolution`
- adding any passthroughs through say for e.g., GPU

Installed epiphany

sudo pacman -S epiphany

install bun

Source1, Source2.

yay -S bun-bin
# used source1

Install flatpak

# usng os independent package managers solution to avoid building the package myself
# since flatpak is most popular among flatpack, appimage or snap, src:
# install flatpak
# sudo pacman -S flatpak
# Using flatpak:

# Usage:
flatpak install pkg-name
## DRAWBACK: It needs lots of dependencies to dowload even for one single application to work, so not using it for anything at all till now.

Install flameshot

# archpackage is an older version i.e., version 11,
# and that has bug i.e., selecting any field after text element tool causes flameshot to crash.

# FIX: Install latest via:
# src:
# version 12 was released on jan 15, 2022 and arch package has no update for this yet..

## USING .AppImage version of `flameshot` which is pretty insane that it doesn't require installation at all, and i simply needed to download the `flameshot-version-here.AppImage` from the release page i.e., .
and it simply runs like hell, yikes!!!

Install handbrake vide encoder that compresses a ton


sudo pacman -S handbrake

# Usage
# or make alias as:
alias handbrake='ghb/'

Install texstudio

Tool to help making/editing latex files.

sudo pacman -S texstudio

Install django

sudo pacman -S python-django
# Wikipage:

###### Verify if django is installed correctly and python can access it ######
# Way1: python-cli
python -m django --version
# Output: 4.0.5

# Way2: python subshell
# And try running below code:
import django
# Output: 4.0.5

Starting with django:

Using pureftpd

A ftp server

# src:
yay -S pure-ftpd

# FYI: I was not able to set up the ftp server with this though :(


sudo pacman -S redis

Take screenshot with scrot

scrot filename
# tip: filename will be created!

format c/c++/other c family languages code

pacman -S clang

# Usage:
clang-format -i myFile.c
# -i is for inplace formatting of file(replace existing file).

# Usage: (my bash function, check my .bash_function file)
clangFormatWatch myFile.c
# or you can watch for all file as well:

Install gtk4 and develop apps

List of applications made using gtk:

@Gitlab, @Github

sudo pacman -S gtk4

# Usage:
# Checkout my gtkmon script from `.bash_function` script for a watching service.

Install pandoc to preview markdown file

Pandoc has 25.5 K github stars. Github:

Try pandoc playground @

sudo pacman -S pandoc

# Usage
pandoc -t plain | less

# I have a function to convert markdown to htlm files locally though:

m2htm (){
	pandoc -t html "$@" > /tmp/v.htm
	echo Try opening /tmp/v.htm in your browser now!

# m2htm

show off hacky hollywood hacking in your terminal


yay -S hollywood

# Usage:

sudo pacman -S cmatrix
# Usage:

yay -S no-more-secrets
# Usage
ls -l | nms
# You can do sneakers with this as well:

Some websites:


not hide tabs in fullscreen in tor browser


installed yaourt

yay -S package-query

git clone
cd yaourt
makepkg -si

Installed telegram-cli-git

yay -S telegram-cli-git

Install figlet


sudo pacman -S figlet

# Usage:
figlet I am superman!
# Output:
#  ___                                                                     _
# |_ _|   __ _ _ __ ___    ___ _   _ _ __   ___ _ __ _ __ ___   __ _ _ __ | |
#  | |   / _` | '_ ` _ \  / __| | | | '_ \ / _ \ '__| '_ ` _ \ / _` | '_ \| |
#  | |  | (_| | | | | | | \__ \ |_| | |_) |  __/ |  | | | | | | (_| | | | |_|
# |___|  \__,_|_| |_| |_| |___/\__,_| .__/ \___|_|  |_| |_| |_|\__,_|_| |_(_)
# It is very similar to cowsay!

Install Drakula theme for gitk - an amazing git diff viewer


cd ~/test

git clone
mkdir ~/git
cp gitk/gitk ~/git/

# Now if you use
# you'll notice beautiful drakula theme.
##FYI: I changed colors of normal git diff as well so now command line `git diff` simply looks super nice as well.
## USING gitk is super amazing with dracula and in its asthetics though.

Install tk to fix gitk

Using gitk (a gui tool for git, really good imo ~Sahil), I encountered error i.e.,

# Output: /usr/bin/gitk: line 3: exec: wish: not found.

# So I FIXED it by installing `tk`
sudo pacman -S tk
# src:

You cannot use ctrl+tab or ctrl+shift+tab to switch tmux-windows in xfce-terminal!


Why Flameshot?


install prisma studio

yay -S prisma-studio-appimage

# Usage

install heroku

yay -S heroku-cli
# source:
# FYI: It took a long time to install though.

Remove packages installed via aur?

# Find exact package name first from the currently installed packages list:
pacman -Q asterisk

# Now remove the package
pacman -R asterik

install prgress

Helpful to know the progress of a running command say cp and mv

pacman -S progress
# src:

insatll gnome-characters (These are really awesome to use!!) ~updated 20 Jun, 2022

sudo pacman -S gnome-characters

Install xdotool to send key sequence to any application

sudo pacman -S xdotool
# For usage example: Refer my snippy script execution.

# Usage
xdotool key ctrl+v
# This will send ctrl+v signal to current application.

Install hub

sudo pacman -S hub

# Creating repo on github from inside a local repo
hub create
# or my alias
git create

# Set hub to use my ssh configuration by running below command
git config --global hub.protocol ssh
# FYI: ^^^^ This command simply adds below content to your `~/.gitconfig` file(NOTE: So if you already have below in your `.gitconfig` file then its nor required to do it again!)
# [hub]
#	protocol = ssh

# source:

.deskto files?

Where are my .desktop files installed with pacman ?

pacman -Ql | grep google-chrome.desktop
# Output:
# google-chrome /usr/share/applications/google-chrome.desktop


Q. What is a .desktop files?

A .desktop file is simply a shortcut that is used to launch application in Linux. Without the .desktop file, your application won’t show up in the Applications menu and you can’t launch it with third-party launchers such as Synapse and Albert. Source:

Q. Where are all of my .desktop files by default?

Ans. ls ~/.local/share/applications/

find your bluetooth apapter’s mac address

yay -S bluez-hcitool

# Usage
hcitool dev
# This will show you the mac address of your bluetooth adapter

hcitool scan
# This will list all bluetooth list devices available nearby

Install asterisk - ivr software


git clone
cd asterisk
# do the work as guided by `emersonjr` @ in comments.
makepkg -si

# IMPORTANT: Using below line in PKGBUILD file as suggested by `emersonjr` simply helps to install without any error, yikes!
sed -i 's/,5,/,10,/g' third-party/Makefile.rules

Install flux from aur

yay -S flux-bin

Install act to be able to run github actions locally


yay -S act

Amazing bash script linter


install yay - a aur package manager

git clone
cd yay
makepkg -si

# Usage:
yay -S google-chrome
# source:

insatll helm

sudo pacman -S helm

Autocomplete any alias now!!

Another article on making autocomplete functions:

alias ke='kubectl exec -it'
complete -F _complete_alias ke

# I can autocomplete any alias now using a entry like above!! Yo!!
# src:
# FYI ^^^^^^^^^^^^^^^^^^^^^^^^^: This required two things installed + one config files(~/.bash_completion) setup, i.e.,
# 1. `complete-alias`
# AUR: bash-complete-alias
# SRC:
# 2. `bash-completion`
# ARCH PACKAGE: sudo pacman -S bash-completion
# 3. Setup file: ~/.bash_completion, such that:
cat ~/.bash_completion
if [ -f /usr/share/bash-complete-alias/complete_alias ] ; then
        . /usr/share/bash-complete-alias/complete_alias

install jiq

A json path finder.

git clone
cd jiq-bin
makepkg -si

# Usage:
cat myjson.json | jiq
# Now you tab and . and [0],[1] syntax to navigate into the json.

install age


sudo pacman -S age
# binaries included: age, age-keygen

sudo pacman -S soaps
# binaries included: sops

insatll kubectx

It has both kubectx(to change context) and kubens (to change namespace) cli tools


sudo pacman -S kubectx

intall zoom

git clone
cd zoom
makepkg -si

what is busybox?

Awesome examplanation and usage details:

Arch package:

Arch wiki:

Official website:


install yq (a jq like parser but for yaml, xml, etc)


sudo pacman -S yq

# Usage:
yq .apiVersion persistentvolume.yaml
# <<<outputs that property value IN JSON to stdoutput here>>>

yq .spec persistentvolume.yaml
# <<<outputs that property value IN JSON to stdoutput here>>>

# convert complete file yaml to json, using `.` selector
 yq . persistentvolume.yaml
## <<<<outputs json to stdout here>>>

# print specific property of all array items
yq .spec.template.spec.containers[].name deployment-persistent.yaml

install lolcat

sudo pacman -S lolcat

# Usage:
lolcat myFile
# Output: lovely rainbow text!

install kvm

TIP: You can define to set any virtual machine to be started on boot and that would be cool, though!

# Follow article from:

# Then you can open virt-manager
sudo virt-maanger

# To free your mouse from the virtmanager, you may use `ctrl+alt` combination. YO!

# Issue in setting the network for the image while making virtual machine?
# Like as mentioned here:

managing kvm’s vm with cli tool

# IMP: You must precede virsh with `sudo`, else it won't work idk why!

# List all vms
virsh list --all

# List all vms including stopped vms
virsh list --state-shutoff

## For example sake in below examples, consider debian11 as my vm name which i got from above list of vms-

# start vm
virsh start debian11

# stop vm
virsh shutdown debian11

virsh shutdown --help
virsh start --help

# Descent article and source of above info:

installed jq

sudo pacman -S jq
# it is a json modifying tool. (21.5k stars on github)

# Usage:
# Chek out @

installed perf

System level benchamarking tool (missing semester - lecture 11)

sudo pacman -S perf

# Usage:
perf stat ls
# Source:

installed sshfs

Mount remote machine path to local directory using sshfs, amazing mounting tool! sshfs uses ssh protocol to do this. Also sshfs recognises your .ssh/config file thus you can make use of aliases very well as I have used own alias for my own system.

#mout remote, #mount over ssh, #mimic remote folder, #mimic remote drive, #folder mount with ssh.

sudo pacman -S sshfs

# 4.5k stars @github:

# Usage:
# Mounting:
sshfs myuser@mycomputer:/remote/path /local/path -C -p 9876

# Unmounting:
fusermount3 -u mountpoint/

Example test:

mkdir one two
# Output:
one  two

# Mounting remote server's directory (one) to host machine (two)
sshfs own:test/test-sshfs/one ./two

# create file in remote machine:
touch one/file1.txt
ls two/
# Output:

# create file in host machine:
touch two/file2.txt

ls one/
# Output:
file1.txt  file2.txt

# Unmounting
fusermount3 -u two/

installed pdflatex

sudo pacman -S textlive-most

# Usage:
pdflatex paper.tex

installed hyperfine - a benchmarking tool for linux

sudo pacman -S hyperfine

# Docs:

# Sample usage:
hyperfine 'sleep 0.3'
hyperfine --runs 5 'sleep 0.3'

# If you want to compare the runtimes of different programs, you can pass multiple commands:
hyperfine 'hexdump file' 'xxd file'

### warmup and cold runs:

# Warmup runs and preparation commands: For programs that perform a lot of disk I/O, the benchmarking results can be heavily influenced by disk caches and whether they are cold or warm. If you want to run the benchmark on a warm cache, you can use the -w/--warmup option to perform a certain number of program executions before the actual benchmark:
hyperfine --warmup 3 'grep -R TODO *'

# Conversely, if you want to run the benchmark for a cold cache, you can use the -p/--prepare option to run a special command before each timing run. For example, to clear harddisk caches on Linux. Conversely, if you want to run the benchmark for a cold cache, you can use the -p/--prepare option to run a special command before each timing run. For example, to clear harddisk caches on Linux, you can run
hyperfine --prepare 'sync; echo 3 | sudo tee /proc/sys/vm/drop_caches' 'grep -R TODO *'

installed ncdu to know the disk usage of the system

sudo pacman -S ncdu

# Usage:

#FYI: It is a similar tool to du
#FYI: du stands for `disk usage`

installed bash-git-prmpt (but not configured, coz it clutters up shell)


git clone
cd bash-git-prompt
makepks -si

installed rsync

sudo pacman -S rsync
# helps to copy files to remote server, (~from missing-semester)

installed screenkey


sudo pacman -S screenkey

# to run in background
nohup screenkey &

# to kill it
pkill screenkey

installed figma

git clone
cd figma-linux
makepkg -si

insatlled gfortran


sudo pacman -S gcc-fortran

gfortran --version

install noisetorch



Test your supressed mic noise with this: (IMPORATNT: Remeber to choose your microphone from inside the website menu, Settings > Microphone > Choose 'NoiseTorch Microphone' from the dropdown.)

git clone
cd noisetorch
makepkg -si


#You might need to logout/login (or completely restart to see the Noisetorch audio in your chrome, firefox works straightaway though)

install gcloud from google cloud

# source:
git clone
cd google-cloud-sdk
makepkg -si

insatll R language compiler

sudo pacman -S r

# Usage

install st

git clone st_from_AUR
cd st
makepkg -si

install gnuplot

sudo pacman -S gnuplot

install mpv player(its good player for streaming youtube videos(it internally uses youtube-dl)) and youtube-dl

sudo pacman -S mpv youtube-dl

Install st

git clone
cd st
makepkg -si

install gvim

sudo pacman -S gvim

install qutebrowser

Website:, Github:


sudo pacman -S qutebrowser

other tiling managers (2.4k github stars) (6k github stars) (7k github stars)

Installed bash-completion tool

FYI: It heps to show branches when you do git checkout <TAB> and I don’t konw other usefulness of this utility yet. TODO: Add more here.

pacman -S bash-completion

Installed vimgolf

git clone
makepkg -si


Installed tldr a binary for tldr for its documentation

sudo pacman -S tldr

Using ranger:

# Use `S` in ranger to return to shell in current folder.

installed 7zz for .7z file extensions

Docs of 7z:

git clone
cd uasm
makepkg -si

git clone
cd 7-zip
makepkg -si

# Extracting 7x extension file:
7zz e documentation-dump.7z

Installed todo.txt-cli


git clone
cd todotxt
makepkg -si

insatlled noefetch

sudo pacman -s neofetch

# Usage:

installed feh image viewer archlinux

sudo pacman -S feh

feh <image-path-here>

installed obs-studio in archlinux

sudo pacman -S obs-studio

# start with:

insalled droid cam(fixed the v4l2loopback issue)

git clone
cd droidcam
makepkg -s
sudo pacman -U *.zst #NOTE: Install both ``droidcam`` and ``v4l2loopback`` file.

sudo modprobe v4l2loopback #this is probably activating v4l2loopback thing IMO.
# HELP:: Source:
# ^^ This worked for Priyam's ubuntu though.

# FYI: If you haven't restarted your sytem (complete reboot) you won't be able to see your camera option in chrome or chromium (but it'll be visible in firefox/obs-studio/other softwares though).

sudo droicam #Should simply work now!

# FYI: I DO HAVE linux-headers package installed as well: (dated: 15 feb, 2022):
sudo pacman -S linux-headers
# Source:

Installed libreoffice in archlinux


sudo pacman -S libreoffice-fresh

Installed tor-browser

gpg --auto-key-locate nodefault,wkd --locate-keys
git clone
sudo pacman -U *.zst file #Fix the filename here.


# To install, use -i/--install (same as pacman -U pkgname-pkgver.pkg.tar.zst):
makepkg -i
# Source:

See default applications settings in archlinux



Changing default browser issue:

Check your old time versions of packages you have insalled earlier with pacman


cd /var/cache/pacman/pkg/
ls -l
# Now you can use pkg-name to install any versioned package:
pacman -U <pkg-name

installed fish

sudo pacman -S fish

Installed fzf

THIS HAS 42k stars on github. Yo!



fzf love

ctrl+c #Cd into searched folder
ctrl+t #Search for file/folder
ctrl+r #Search command history

?? I don’t remember how I installed it lately..

Usage is pretty awesome!!

# Files under the current directory
# - You can select multiple items with TAB key
vim **<TAB>

# Files under parent directory
vim ../**<TAB>

# Files under parent directory that match `fzf`
vim ../fzf**<TAB>

# Files under your home directory
vim ~/**<TAB>

# Directories under current directory (single-selection)
cd **<TAB>

# Directories under ~/github that match `fzf`
cd ~/github/fzf**<TAB>

Installed nginx

sudo pacman -S nginx
sudo systemctl status ngingx # Shoudl show not active
sudo systemctl start nginx # To start the server

#Now you can access server via browsing:
http://localhost/ or

# FYI: You can browse old working configs and your own docs @
- (search for `nginx.conf` files)
#Important files and config file paths:
vi /usr/share/nginx/html/index.html
sudo nvim /etc/nginx/nginx.conf

Installed ab i.e., Apache HTTP server benchmarking tool


sudo pacman -S apache

#Now you have access to `ab` cli.

Installed neovim

neovim - Archwiki, neovim - Arch package.

sudo pacman -S neovim
# neovim uses your .vimrc file as well (idk, update 28 april 2022)

#### Installing on debian based (works well on ubuntu)
# 1. Download a release build from below i.e., a `.deb` file

# 2. Install it and done!
sudo apt install ./my-package.deb

## Problems with installation on any server?
# With ubuntu all went well but cursor doesn't change to line shape coz the os doesn't support.
# With debian all went well + cursor shaping in insert mode works very good so it confirms that ubuntu lacks something that prevents cursor shaping when we go in insert mode. Yikes! DEBIAN rocks!

Installed tmux:

sudo pacman -S tmux
# Get tmux config file from:

## Another tmux cheatsheet:

### 10 August, 2022: Respawn current pane with prefix a
# as I added below to tmuxconfig file:
# Respawn with love with `prefix a`, src:
# bind a "respawn-pane -k"

## Command to run a command in new pane ? 
# Ans. tmux split-window "echo hello;sleep 100"       ###so this will run the command in new pane, yikes!!
# src:

## You can switch between sessions in tmux via: ctr+( or ctrl+) and also you can do something like `ctrl+t s` to switch using a preview as well. Yikes! Src:

## Enable synchronize-panes by pressing `ctrl+t` followed by `shift+:` and next type `set synchronize-panes` on at the prompt. Now all the panes in the current window will be synced such that any thing you type will be done to all the panes. To disable synchronization: set synchronize-panes off.

# When in copy mode you accidentally selected some text using `v` or `V` but now you want to undo the select mode(deselect text), then you can press r to exit that select mode. YO!

# When in copy mode and you have selected some text, you can press o to move the cursor to the other end in the selected text. Yo!

# TODO: Good tmux blog(suggested by missing-semester):
# TODO: Good tmux blog (suggested by missing-semester):

## You can swap a window pane with the upward pane in the upward with ctrl+t {
## You can swap a window pane with the upward pane in the downward with ctrl+t }

## You can attach to all the available tmux sessions currently alive via: ctrl+t ( or ctrl+t )

## You can use `shift+right click` to get default rightclick terminal behaviour. YO!!
# src:

# To switch to previous active window
ctrl+t p

ctrl+t n

## convert two horizontal into vertical layout
ctrl+t alt+1 # Even horizontal
ctrl+t alt+2 # Even vertical

ctrl+t alt+3 # main horizontal
ctrl+t alt+4 # main vertical

 Arrange panes in one of the five preset layouts: even-
            horizontal, even-vertical, main-horizontal, main-
            vertical, or tiled.

# Usage:
tmux    # Good to go now!
tmux -V # Know your tmux version.

# So, your ```bind-key``` is C-t (i.e., control+t, but otherwise it is control-b by default IMO ~sahil.)
# FYI: ```C-t C-? List of key bindings.``` (i.e., control+a control+? to open list of shortcuts, FYI: press ```q``` to exit it).

# WOW:: For selecting text from command ouput: Use ```C-a [``` to enter the ```copy mode``` and then you are in vim mode and simply use v or V and y to yank text and press ```q``` to exit. Yikes!!!
# WOW:: Use ```C-t ?``` to open the help menu in tmux and press ```q``` to exit it.
# Others:

C-t & to kill the current window
C-t x to kill the current pane
C-t <space> to change current panes to horizontal, vertical, or comple multiple adjustments.

# witching to a pane with pane numbers:
C-t q to show the pane numbers (press esc to exit that)
FYI: While the numbers are on top of panes you can switch to that pane by pressign the corresponding pane number as well.
FYI: You need to confirm killing the window with x by default but you can disable the confirmation for both pane and window by following this:

C-t % to make new pane towards right.
C-t " to make new pane downwards.
C-t n to make a new window. # My custom hotkey.
# ALSO: Use ctrl+d to kill pane (this is a general terminal keybinding to kill any terminal though).

# Configuring tmux to start as default in any shell:
# Source:

# Setting new prefix key in config doesn't work for you? (HINT: You haven't stopped your earlier tmux server, do it via ```pkill tmux``` command.
# Answer:

#Kill all tmux windows and panes ?
pkill tmux

# Opening tmux without config file:
tmux -f /dev/null # Source:

Also, screen is another multi terminal managing utility but it isn’t as good and popular as tmux:

sudo pacman screen
# Usage:

# screen is tmux like software but it isn't that good coz::
# Why to use tmux and not screen:
# though you can use screen it works very similar to tmux but isn't very popular for some reasons though its decent but i couln't able to start screen automatically with .bashrc setup idk why!

# Now refer this blos post:
# Also do use .screenrc file and add ```startup_message off``` as suggested in above article to open it without initial message.

screen -wipe # To kill the detached session.
screen -wipe <ID> # TO kill a session with a particular id (you need this command only when there are more than 1 active sessions). Src:

Installed pdf opening utility (llpp* or mupdf)

sudo pacman -S llpp

#or you can use:
sudo pacman -S mupdf #mupdf doesn't allow continuous page scrolling so llpp is a better alternative.

llpp/mupdf myfile.pdf

Installed xorg-xprop in archlinux

sudo pacman -S xorg-xprop

#Now you can use:
# Now use cross-hair cursor to click any window and get all the details of that window!! Its good for doing stuff (like making certain windows always float in i3 tiling manager or other similar stuff).

Installed auto-jump in archlinux

git clone
cd autojump
makepkg -s
sudo pacman -U ./autojump-22.5.3-9-any.pkg.tar.zst

#Reading post install instructions I see it recommends to add below line:
[[ -s /etc/profile.d/ ]] && source /etc/profile.d/ #Making autojump work!

#Now restarting the terminal make me use it via:
j <anyRecentlyUsedFolderName>

Q. Why autojump is awesome?

Ans. Coz it also does this:


Installed mutt - a cli email client utility

IMPORTANT NOTICE: Starting from May 30, 2022 you need to have APP_PASSWORD to make mutt work. READ HERE

sudo pacman -S mutt

Configuring your email client help here.

Using mutt from cli form this blog post.

UPDATED: 4 Aug, 2022: Use this address to create app password. Source: Article.

Do interesting stuff with mutt:

echo I need more things and all this text goes to body. | mutt -s 'MySubject'
# Here I am sending subject and above body to myself.
mutt -s 'MySubject' < myFile.txt
# Here I am sending subject and body from myFile.txt to my own email.

IMPORTANT: You must enable this option in your gmail account so be able to login via mutt.

Installed crontab in archlinux


Cron docs @ archlinux:

sudo pacman -Syu cronie
systemctl enable --now cronie.service

# Test status of service now:
systemctl status --now cronie.service

# Now you can use cli-tool i.e, ```crontab```
# IMPORTANT: Add ```export EDITOR=/usr/bin/vim``` in your ```~/.bashrc``` file so ```crontab -e``` would work as it uses ```/bin/vim``` for editing cron files.

Installed workrave in archlinux


sudo pacman -S workrave

Installed hstr (hh)

A search engine for command line history

Source: AUR

git clone
cd hstr
makepkg -s
sudo pacman -U hstr-x.x.x.x-x86_64.pkg.tar.zst

# Usage:


Also mcfly seems another fascinating solution for this as well, i.e., source and it github (3.5k stars WOW).

installed zip in archlinux:

sudo pacman -S zip

Unzip/zip the files with password

zip -e sourceFolder
# source:

# Unzipping:

Install yarn on archlinux

sudo pacman -S yarn

Installed vnstat - a network bandwidth and speed monitoring service

sudo pacman -s vnstat
# Read awesome docs @

# Issue using `vnstat` like permission issue then this is what u need to fix it:
# src:
systemctl start vnstat.service
systemctl enable vnstat.service

# Usage:
vnstat --add -i wlp3s0 #or your network card name via command: ip addr

#Fav use case:
vnstat --live

Installed any-desk

git clone
cd anydesk-bin
makepkg -s
sudo pacman -U anydesk-bin-xxx.xx.tar.zst

Installed inotify-tools for inotifywait

Wow, even facebook’s watchman also uses inotifywait underneath src.

sudo pacman -S inotify-tools
inotifywait -q -m -r -e close_write --exclude '.git/*' --format 'Wrote file %w%f' . # We're watching complete directory and recursively as well.
# FYI You can append ```| sh``` at the end of above command to execute the formatted message as shell commands DIRECTLY as well. (See below source link to know 1 usecase of this).
# source: ((But the problem with << this answer is that it watches over a file and when we watch over a single file like that (i.e., say `file.txt`) then %f doesn't seem to work at all IDK WHY, but it simply works if we watch over a complete directory via a . {period} )).
# FYI: %f is the filename and %w is the directory path in which the just changed file exists.

# Another way of doing it if you want to include a while loop (IMO{sahil}: its not at all necessary coz above one-liner performs all good!).
inotifywait -q -m -r -e close_write --exclude '.git/*' --format '%f' . | while read FILE; do echo "$FILE written."; done
# source: same above stackoverflow's answer.
# inotifywait has a javascript implementaion as well:

echo helloworld
sleep 3
echo byeworld

# ~sahil: Watch over file and execute that file i.e., ``````. Inspired from a comment in answer from below stackoverflow's answer.
# The drawback of this way instead of original answer's way i.e. using `read -r` is that when the command is in the process of execution(i.e., inotifywait won't be able to get signal of file write event, thus this simple looking way fails to work good enough for cases like running a express's node server which runs indefinitely and one needs to kill the process and start it again on file write changes. Yikes!
while inotifywait -q -e close_write > /dev/null; do

# Watch over file and execute that file i.e., ``````.
# src:
# tl;dr: Since we're using `-m` (monitor) flag so our the command(./1.s) is queued and run sequentially only when the last instance completely finishes!
# The problem with this solution is that when the file is in execution phase (i.e., the script doesn't kill the existing running process but instead for getting it completed/exited and then only the event of running the file starts. So in simple terms it does listen to file changes even when the file ( is in execution phase but the problem is it doesn't kill the existing process and thus all write events triggered actions are queued. So such mechanish is not good for cases like running a express's node server which runs indefinitely and one needs to kill the process and start it again on file write changes. Yikes!
inotifywait -q -m -e close_write |
while read -r filename event; do

# ~sahil: Watch over current directory recursively and execute `````` file.
inotifywait -q -m -e close_write -r . |
while read -r filename event; do
# Note the ```-r .``` option will watch over the current directory in recursive manner.

# Usage:

# Docs:
man inotifywait
# github:

# From: ```inotifywait --help```
# -e|--event <event1> [ -e|--event <event2> ... ]
# Listen for specific event(s).  If omitted, all events are listened for.

# -m|--monitor
# Keep listening for events forever or until --timeout expires. Without this option, inotifywait will exit after one event is received.

# -q|--quiet
# Print less (only print events).

# -r|--recursive
# Watch directories recursively.

# --format <fmt>
# Print using a specified printf-like format string; read the man page for more details.
# e.g., --format 'Wrote file %w%f'
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (TESTED ~sahil)

Setting up android environment with vscode

Arch’s article:

Permission of certificates permission denied ISSUE FIXED !! :

Installed sdkmanager in archos

Fixed as:

Vscode Extension: Android full Support helps to create fresh projects and also facilitates sdkmanager from command pallete in android studio.

Build your app from the command line @ Android Studio Docs

1. java

#install java/javac in system.
sudo pacman -S jre11-openjdk
java --version

sudo pacman -S jdk11-openjdk
javac --version

2. install platform-tools

git clone
cd android-sdk-platform-tools
makepkg -s
sudo pacman -U android-platform-sdk-tools-x.x.x....tar.zst

# that helped me to get rid of ```adb devices``` error of no-permission, Yikes!! ALSO You would need to accept the permission on this very time when you connect the device again. And it'll show the device as ```adb devices``` >> ```<device-id> device```

# You need to source /etc/profile or relogin to add the Android SDK platform tools to your path.

# For vscode's extension use the platform-tools you can define `ANDROID_SDK_ROOT` variable must be pointing to platform-tools directory.
# So add a variable entry in /etc/environment file as

and run so vscode get permission to read/write to /opt/android-sdk folder.
sudo chmod g+rwx /opt/android-sdk
sudo chmod o+rwx /opt/android-sdk

# and logout and login, now vscode's extension would pick right path for android-sdk and you would be able to access adb cli's tool as well. If above android-platform-sdk-tools cause issue you can simply remove and reinstall the the tools again from the sdk manager in vscode. Yikes!

Platform-tools installed @ /opt/android-sdk/platform-tools/

3. Android sdk

Installing Android 10 (API 29) from the Open SDK Manager in the vscode’s extension.

In the Android 10(API 29): Choose SDK Platform, Google APIs Intelx86 Atom_64 System Image and Sources for AndroidSDK. Also, you can choose to install Android SDK Platform-tools or ignore if you installed that from arch’s AUR before.

installed kotlin archos

sudo pacman -Syyu
sudo pacman kotlin

Official installation source,

Installed mongodb - archos

Src: 1, 2.

git clone
cd mongodb-bin
makepkg -s
sudo pacman -U mongodb-bin....tar.zst

# Run mongodb server:
sudo systemctl start mongodb

# To enable mongodb service to run on system startup:
sudo systemctl enable mongodb

Set vim as editor via git instead of vi (it throws errror bcoz of that)

git config --global core.editor vim

Installed speedtest on arch

sudo pacman -S speedtest-cli
# Usage:


Detect if a service i.e., services in systemctl is enabled (starts on boot) ?

systemctl is-enabled code-server@array

# when the service is enabled: sudo systemctl enable code-server@array
#Output: enabled

# when the service is disabled: sudo systemctl disable code-server@array
#Output: disabled


read lots of below from:

Recursiveness in ls or tree

ls -R -I node_modules* -I debug* -I build* -I deps*
# Prints everything recursively (-R) and ignored patters like node_modules, build, deps. Yikes!!

tree -I 'arch_os|target|rustlings|target|node_modules'
# PRints everything recursively, src:

head and tail

head -n 5 someFile #prints first 5 lines of file.
tail -n 5 someFile #prints last 5 lines of file.

Terminal - seaching previous commands ?

Type some text in terminal and press ctrl+r - Activate search mode.

Now press ctrl+r multiple times to search back in order(fyi: there’s no way to forward search, :( sad). FYI: Its not really good experience to use that. ~Sahil.

ctrl+g - Exit search mode.

Other good way to seach in previous commands in like:

history n # n is number and it give last n number of commands(including the commands you executed in current shell as well).
history 300 | grep scp | grep important$

The most amazing experience to solve this is via using hh cli tool, i.e., #see hstr in this file for help for using that.

Installed docker, docker-compose in archos

sudo pacman -S docker docker-compose

sudo systemctl enable docker.service #So that docker automatically starts on system boot.

# PLEASE REBOOT(reboot means reboot and not just logout and login) THE SYSTEM ONCE PLEASE TO BE ABLE TO GET DOCKER FUNCTIONING. src:

# Test if docker is running GOOD via:
sudo systemctl status docker
# or
docker info # OR
docker ps -aux

sudo chmod 666 /var/run/docker.sock
#    ^^^^^ This might be needed if you get some permission issue for socket i.e., ```/var/run/docker.sock```
# src:

Installed postgresql in archos

sudo pacman -S postgresql
To setup the configuration now please follow @

Installed Watchexec ( a program watch execution on modification, written with rust!

sudo pacman -S watchexec
# Usage: watchexec -c ./    # -c is option for clearning screen on each run.

FYI: The problem with nodmeon -x "bash $@" was that it seemed to supress some message like when have a script like:

read -p "Enter your name" name # with nodemon it does print ""Enter your name"" which get printed when you run wihtout nodemon. So watchexec rocks!
echo $name

Installed gui interface for postgres i.e., pgadmin4

### installation via pip :)
# Browse:

################# INSTALLATION VIA arch package is brocken at the moment (from a long time I guess i.e., 1 whole year)
################# sudo pacman -Syu
################# sudo pacman -S pgadmin4
################# src:

Installed qbittorrent

sudo pacman -S qbittorrent


Intalled telegram-desktop

sudo pacman -Syu
sudo pacman -S telegram-desktop
ln -s file/folder .
# ^^ creates link of file/folder to current directory with same name.

unlink file/folder
# ^^ this will remove the symlink that you created earlier.


Fix authentication for github co-pilot in archos

Simply install keyring: sudo pacman -S gnome-keyring ^^ this was required to make the auth with github copilot when the login with browesr happens for auth of github account.

Source: parent => child.

Installed pip on arch

sudo pacman -S python-pip


Installed jupyter notebooks with pip: pip install notebook, Source.

Also if you can’t access jupyter cli binary from terminal make sure you add export PATH=$PATH:~/.local/bin to your ~/.bashrc file.


Mounting my kindle/portable hdd on linux

sudo mount /dev/sdc sdc1/

sudo umount /dev/sdc #To un mount.

change root password

sudo -i passwd

insatlled sqliteman

Source: stackoverflow answer


git clone
cd sqliteman
makepkg -s
sudo pacman -U sqliteman-1.2.2-12-x86_64.pkg.tar.zst

Installing nvm:

src: AUR

git clone
cd nvm
makepkg -s
sudo pacman -U nvm-*******-any.pkg.tar.zst
echo 'source /usr/share/nvm/' >> ~/.bashrc

Insall yarn my arch setup

npm i -g yarn

Linux fun:

. --help # is same as
source --help

Define variables in arch-os

sudo vim /etc/environment
# Now add some value pairs, i.e., v1=value1 one in each line and you would be able to test them i.e., `echo $v1` once after logout/login event.
# Tip if you want to access the variables in current bash in hurry.., simply do like `. /etc/environment` to test your `/etc/environment` file in current bash shell only.

Installed dig cli tool

sudo pacman -Sy dnsutils


Pushing archLinux.iso to a usb:

dd: disk dump (people also call it as disk destroyer, coz if not used correct drive it'll destroy the target drive).
man dd: to read its documentation.

dd if=Downloads/archlinux_64.iso of=/dev/sdb
# if=inputFile, of=ouputFile.
# be careful that your of (output file) i.e., if its gonna be extremely right device you want the iso file's data to be dumped off.

Why prefer pacman ?

Bcoz if you ever run pacman -Syu then all your packages installed via pacman will be updated.

Installed chromium

sudo pacman -S chromium

If you get some error then you can use sudo pacman -Syu to upgrade the system and probably the problem will be fixed as this helped me.

Update system

sudo pacman -Syu

Installed code-server via below commands


# Install code-server from the AUR with plain makepkg.
git clone
cd code-server
makepkg -si
sudo systemctl enable --now code-server@$USER
# Now visit Your password is in ~/.config/code-server/config.yaml

setting up ssh

sudo pacman -S openssh

# check the status:
sudo systemctl status sshd

#start service if above command shows ``inactive``
sudo systemctl start sshd

# now check again the status and it should be active for sure.

# to stop ssh server:
sudo systemctl stop sshd


Configuringranger and setting google-chrome-stable as defautl pdf viewwer:

ranger --copy-config=rifle #Copies default config file of ranger to .config/ranger/rifle.conf path, so we can customise it on user basis.
vi .config/ranger/rifle.conf

and now add below line where you have other pdf extension openers defined in there:

ext pdf, has google-chrome-stable,     X, flag f = google-chrome-stable "$@"

Installing comfortable-motion and vim-plug

Install vim-plug(a vim plugin manager): LEARN vim-plug ->

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \

now, add config to ~/.vimrc file i.e., code from:

OR tl;dr; add below code directly:

call plug#begin('~/.vim/plugged')

Plug 'yuttie/comfortable-motion.vim'
" More plugins here.

call plug#end()

IMPORTANT: Reload .vimrc and :PlugInstall to install plugins.

Disable capslock completely (ROCKS!)

Updated on: 16th April, 2022

FYI: The file /etc/X11/xorg.conf.d/00-keyboard.conf is backuped at config repository as well!! So you can directly copy that file to its needed location anytime to get your settings.

Stackoverflow Amazing Answer - xmodmap - remap Caps_Lock to Escape and Shift+Caps_Lock to Caps_Lock

Learn how to make sample config files from scratch from below link of arch docs: Click here

Source: Using config files of x11 @ ArchWiki


sudo nvim /etc/X11/xorg.conf.d/00-keyboard.conf

and add below code in the tripple backticks:

Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
#        Option "XkbLayout" "cz,us"
#        Option "XkbModel" "pc104"
#        Option "XkbVariant" ",dvorak"
#        Option "XkbOptions" "grp:win_space_toggle"
	Option "XkbOptions" "terminate:ctrl_alt_bksp,caps:escape"
# Currently, I am completely disabling capslock      ^----------^

My useful notes:

# FYI: Read all available optinos via: cat /usr/share/X11/xkb/rules/base.lst
# FYI: The options should be separated by comma as you can see above^^^^^
# FYI: ctrl+alt+backspace will simly logout.

# Usefult options to see:
# terminate:ctrl_alt_bksp Ctrl+Alt+Backspace (( ~Sahil, this will logout in superfast manner without any confirmation.
# caps:escape_shifted_capslock Make Caps Lock an additional Esc, but Shift + Caps Lock is the regular Caps Lock
# caps:none            Caps Lock is disabled
# caps:escape          Make Caps Lock an additional Esc

Sending a notification with notify-send

notify-send Hello "More text here"

Enabling hibernation in archlinux

  1. LEARN: ::About What all needs to be done in order to make hibernation work when you already have a swap partition and have a entry for it in the /etc/fstab file::

One thing I remember, I needed to point the kernel to the swap partition on the kernel command line. This is described somewhere in the ArchWiki article about hibernation. There might also be changes needed in the HOOKS= line in /etc/mkinitcpio.conf, but I don’t quite remember. This will also be mentioned somewhere in the wiki article.

I occasionally have problems with hibernation depending on the kernel version. Some versions don’t work right for my PC here. I don’t think that’s the problem for you from the way you describe what’s happening, but I guess you could still try a different kernel version to check. There’s an alternative one in the package named linux-lts. You can install it in parallel to the normal linux package. You need to look up how to add a second boot menu entry for it with the boot loader you are using.


  1. LEARN ::About adding entry in the /etc/default/grub file:: ^^ search for hibernation keyword and you’ll get the necessary things you need to do in file - /etc/default/grub in variable - GRUB_CMDLINE_LINUX_DEFAULT.

  2. LEARN :: Reference from video: src: