All the dot-files for my Arch Linux installation with i3-gaps as the tiling window manager
- Install and use
zsh
as the default shell by runningchsh -s $(which zsh)
- Install zimfw by following the instructions in readme
- After installation, run
zimfw install
followed byzimfw uninstall
, to modify the plugins forzimfw
- Install alacritty as the default terminal.
- Configure environment variables for terminals by adding the below lines to
.zshenv
:export TERM="alacritty" export TERMINAL="alacritty"
- Configure environment variables for terminals by adding the below lines to
- Use fd as an alternative for
find
- Use Ripgrep as an alternative for
grep
- ripgrep_all:
rga
: ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc. - bingrep: like
grep
UBER, but for binaries - tokei: count lines of code
- Use bat as an alternative for
cat
- Use exa as a modern alternative to
ls
- Use broot as a modern alternative to tree
- nomino: batch rename files using regex
- navi: An interactive cheatsheet tool for the command-line
- hyperfine: A command-line benchmarking tool
- hexyl: command-line hex viewer
- procs: A modern replacement for ps written in Rust
- bottom: cross platform graphical process/system monitor
- desed: Debugger for Sed: demystify and debug your sed scripts, from comfort of your terminal.
- delta: A syntax-highlighter for git and diff output
- xidlehook: xidlehook is a general-purpose replacement for xautolock. It
executes a command when the computer has been idle for a specified amount
of time.
- caffeinate: This will pause xidlehook so that the system will not go to sleep
- watchexec: Executes commands in response to file modifications
- i3status-rs: as the bar for i3wm
- tealdeer: tldr client written in Rust
- enact: to have automatic configuration of multiple monitors with hotplug support
- tree-sitter: An incremental parsing system for programming tools https://tree-sitter.github.io
- dotenv-linter: lint dotenv files
- paru: AUR helper written in Rust
- dust: A more intuitive version of du in rust
- grex: generate regex from user provided test cases
- kitty: GPU based terminal emulator
- powerlevel10k: super fast prompt for zsh.
- tmux: a terminal multiplexer
- s: search from the command line
- ncdu: Ncdu is a disk usage analyzer with an ncurses interface.
- lnav: Watch and analyze your log files from a terminal.
- minicom: Serial communications program
- jq: command line JSON processor
- ffmpeg: A complete, cross-platform solution to record, convert and stream audio and video.
- imagemagick,graphicsmagick: manipulate images on the command line
- graphviz: graph visualization software
- Gstreamer: pipeline based multi-media framework
- prettyping: is a wrapper around the standard
ping
tool, making the output prettier, more colorful, more compact, and easier to read. - Replace
ping
withprettyping
using an alias:alias ping=prettyping
- yank: yank terminal output to clipboard
- syncthing: modern cross platform alternative to rsync
- GNU Stow: GNU Stow is a symlink farm manager which takes distinct packages of software and/or data located in separate directories on the filesystem, and makes them appear to be installed in the same place.
- aria2: aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.
- nano-syntax-highlighting: Improved Nano Syntax Highlighting Files
- multitail: MultiTail allows you to monitor logfiles and command output in multiple windows in a terminal, colorize, filter and merge.
- safe-rm: wrapper around rm to make it prevent accidental delete of important directories that should never be deleted
- thefuck: correct previous console command
- fzf: A command-line fuzzy finder
- github cli GitHub’s official command line tool
- pre-commit run pre-commit hooks for git
- shfmt: format shell files using
shfmt
- shellcheck: ShellCheck, a static analysis tool for shell scripts
- bash-language-server: LSP server for bash written in TS
- LLVM tool-chain: llvm, clang, clang++, clangd, lld, clang-tidy, clang-format
- ccls: LSP based language server for C and C++
- CMake: C/C++ build files generator
- qt5: GUI Framework for C++
- boost: peer-reviewed portable C++ source libraries which works will with the standard library
- qt creator: IDE for C++ written by Qt team
- clazy: Qt oriented code checker based on clang framework
- ccache: Ccache (or “ccache”) is a compiler cache. It speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again.
- cppcheck: Cppcheck is an open source static analysis tool for C/C++ code
- gdb, lldb: debuggers for C/C++ and rust code.
- doxygen: Generate documentation from source code
- rust-analyzer: An experimental Rust compiler front-end for IDEs and text
editors. On Arch Linux install
rust-analyzer-bin
fromAUR
- cargo-audit: Audit Cargo.lock files for crates with security vulnerabilities reported to the RustSec Advisory Database.
- cargo-bloat: find out what takes the most space in your executable
- cargo-update: A cargo subcommand for checking and applying updates to installed executables
- Rustfmt
- Clippy
- Gopls
- Godef
- HIE
- black: code formatter for python
- pyright python language server
- pipenv: brings npm like functionality for python
- mypy: optional static type checker for python
Install it with:
paru -S mypy
- bandit: for finding common security flaws in python code
- prettier code formatter for JS/html/css
- eslint linter for javascript and typescript
- typescript-language-server LSP for typescript and JS
- nodemon automatically reload server if changes were made to source code
- Install
ntp
package and enable the ntp service - Run the following commands to disable
systemd-timesyncd
systemctl stop systemd-timesyncd systemctl disable systemd-timesyncd sudo timedatectl set-ntp False
sudo systemctl enable ntpd.service
-> to start ntpd at boot- enable logs and statistics for ntp
ntpq -pn
-> show the status of ntp
- Configure locale for your system by adding the below lines to
.zshenv
file:# locale configuration export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8
- Install
xorg-xmodmap
for keyboard configuration: Left control is nowhyper
and Caps Lock is nowcontrol
- Enable sticky keys are enabled without locking using
xkbset
- Add hook to suspend so that
xmodmap
is run andsticky keys
are enabled after computer is resumed. This is necessary because X keyboard settings are reset after suspend.Create a file
/etc/systemd/system/resume@csraghunandan.service
[Unit] Description=User resume actions After=suspend.target [Service] User=csraghunandan Type=simple Environment=DISPLAY=:0 ExecStart=/usr/bin/bash /home/csraghunandan/.scripts/system/keeb [Install] WantedBy=suspend.target
And run
sudo systemctl enable resume@.service
- reverse mouse scroll direction in i3, by modifying libinput drivers for
mouse/pointer in the file
/usr/share/X11/xorg.conf.d/40-libinput.conf
:Section "InputClass" Identifier "libinput pointer catchall" MatchIsPointer "on" MatchDevicePath "/dev/input/event*" Option "NaturalScrolling" "on" Driver "libinput" EndSection
- Add right click option to touchpad for double tap fingers and natural
scrolling by adding to the same file above, the line:
Option "Tapping" "on" # enables tapping Option "ClickMethod" "clickfinger" # replaces synaptics tapping setup Option "NaturalScrolling" "on"
- modify the following lines in
/etc/systemd/logind.conf
:HandlePowerKey=suspend HandleLidSwitch=lock
This will enable the system to:
suspend
when pressed the power button instead of shutdown- If the laptop lid is closed,
lock
the system
- Use
i3lock
as the lockscreen for i3 and configure it like so:- Setup an alias for
i3lock
:alias i3lock="i3lock && echo mem > /sys/power/state"
- Use
xsslock
to runi3lock
when the system is locked - Use
xidlehook
to lock the screen after 10mins of inactivity and suspend computer after 10more minutes of further inactivity
- Setup an alias for
TLP
andthermald
for power management for laptops:- Enable
tlp.servce
- mask the systemd service
systemd-rfkill.service
and socketsystemd-rfkill.socket
- enable
thermald.service
. This will reduce the CPU clock if temperature exceeds a threshold
- Enable
- copy
low-battery-alert.service
andlow-battery-alert.timer
to/etc/systemd/system/
and enable both of them by runningsudo systemctl enable low-battery-alert.service
andsudo systemctl enable low-battery-alert.timer
.- Install
acpi
for fetching laptop battery status
- Install
- Run
mkdir -p ~/.config/mpd/playlists
and enablempd
service by running:sudo systemctl enable mpd.service
- Use
ncmpcpp
as the client formpd
- Install
mpDris2
(from AUR) and enable it by runningsystemctl --user enable mpDris2
- Install
playerctl
andpulseaudio-ctl
for media controls. This allows us to add notifications and maximum volume limit for system volume - Install
alsa
andpulseaudio
:alsa-utils
,alsa-plugins
,pluseaudio-alsa
- Use
VLC
as the media player for videos. Enable hardware acceleration for decoding by installing:intel-media-driver
,libva-utils
,xf86-video-intel
and selecting the VAAPI backend for hardware decoding in settings for VLC pavucontrol
(controlling audio through UI)- Other media tools:
- Gstreamer
- ffmpeg, libav
- imagemagick, graphicsmagick
- graphviz
- flac, faac
- x264, x265
- youtube-dl (download from youtube and other media sites)
- Bluetooth configuration:
- Install
bluez
,bluez-utils
andblueman
(front end for bluetooth) - Enable and start bluetooth service:
sudo systemctl enable bluetooth.service --now
- Install
KeepassXC
as the default password manager for linux. Also, enable the browser integration and install plugins for chrome and firefoxufw
: simple firewall for linuxenable
ufw.service
after installation and runsudo ufw default deny
to enable the firewall- change the default DNS resolver to
1.1.1.1
by editing thenameserver
entry in/etc/resolv.conf
and make it unwritable by running the command:chattr +i /etc/resolv.conf
- SSH config for git
- Add
SSH_AUTH_SOCK DEFAULT="${XDG_RUNTIME_DIR}/ssh-agent.socket"
to~/.pam_environment
file - If you are running
openssh
verison > 7.2, add these to~/.ssh/config
file:AddKeysToAgent yes
. This will instruct the ssh client to always add the key to a running agent, so there’s no need to ssh-add it beforehand. - Create a
~/.ssh/config
file and change permissions by:chmod 600 ~/.ssh/config
- Start the
ssh-agent
service:systemctl --user enable ssh-agent --now
- Add
- Use
Zathura
as the default reader- Install the following packages:
zathura-pdf-mupdf
,zathura-djvu
,zathura-cb
- Enable copy to clipboard by adding to
~/.config/zathura/zathurarc
: - Make
zathura
the default PDF reader for opening applications in firefox, or other GUI applications by modifying themineapps.list
- Make
zathura
the defaultReader
application by adding the following lines in your.zshenv
file:export READER="zathura"
- Install the following packages:
- Use
libreoffice-fresh
package for installing libreoffice - Dictionary and thesaurus config:
- Install
artha
as the thesarus for linux. Bind its shortcut toHyper+Alt+t
- Install
goldendict
with websters 1828 dictionary by following: this guide . Bind its shortcut toMeta+Alt+t
- Install
- Install
hunspell
,hunspell-en_US
,hunspell-en_GB
for spell checker - Install
dictd
for English to other language dictionary translations - Install
texlive-most
andpygments
for a complete latex environment - Install
pdf-tools
to be able to view PDF file inside emacs usingpoppler
- Install
pandoc
for converting documents from one format to other
GNU Emacs
: My choice of text editorPostman
for testing HTTP requestsZeal
for offline documentationSource Trail
for browsing C/Cpp and Python projects visually- Install LibreOffice from
libreoffice-fresh
(in AUR) Plantuml
for creating control flow and other diagramsdbeaver
(open source Database viewer)Wireshark
for network analyzing. Install it with the following packages:wireshark-qt
,wireshark-cli
- editorconfig: EditorConfig helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs.
- foliate: Simple and modern ebook reader
- Install
deadd-notification-center
for getting notifications for i3 - Install
rofi
as the application launcher - Use i3status-rs as the bar for i3wm
- Use
numlockx
to enable numlock functionality - xbanish: banish the mouse cursor when typing, show it again when the mouse moves
- Use
feh
to set the wallpaper background - Use
i3lock
as the locker for i3wm - Use picom as the display compositor for i3. Install from
git
, for Archlinux, install usingpicom-git
from AUR.- Use
experimental backends
option when running picom, otherwise theglx
backend will not work. - To run
picom
, copy the systemd user service file(picom.service
) to/usr/lib/systemd/user/
and run the below command:# this needed as sometimes picom crashes when restarting i3 session systemctl --user enable picom.service --now
- Use
- Use udiskie to get notifications and manage devices connected to the system.
- Use maim and
xdotool
to take desktop screenshots.xdotool
is also used to get picture in picture effect using i3. The following are enabled in i3:- screenshot of entire screen
- screenshot of active window
- screenshot of region
- copy selected region to clipboard
- Install
xorg-backlight
brightness of the screen - Install
xorg-xinput
for enabling/disabling touchpad - Use clipmenu as the clipboard manager for Linux:
- Enable and start the
clipmenud
service:sudo systemctl enable clipmenud --now
- set
CM_LAUNCHER=rofi
, so that you can use rofi to view clipboard
- Enable and start the
- Use
nm-applet
which will provide a tray for NetworkManger - Set
firefox-developer-edition
as the default browser by:gio mime x-scheme-handler/http firefox-developer-edition.desktop gio mime x-scheme-handler/https firefox-developer-edition.desktop
- Run
blueman-tray
to get a tray icon for bluetooth. This requiresblueman
to be installed - Install xedgewrap to allow mouse to wrap across multiple monitors
- Install enact to have automatic configuration of multiple monitors with
hotplug support:
# install enact using cargo cargo install --git https://github.com/chmln/enact # to use in i3, add this line to your config: exec --no-startup-id enact --pos top --watch &
- Install i3keys to list all the bindings made for i3wm in web or terminal
- gpick: Advanced color picker written in C++ using GTK+ toolkit
- sxhkd: Simple X hotkey daemon
intel-gpu-tools
: this will install the applicationintel-gpu-top
, which we can use to monitor Intel GPU usage- Nautilus as the default graphical file explorer
xorg-xev
,xorg-xprop
,xorg-xhost
,xorg-xrandr
: X11 related utilities
- Use
nordic
as the default GTK theme andpaper-icon-theme
as the default icons set - Font sets for arch:
noto-fonts
,noto-fonts-extra
,noto-fonts-cjk
,noto-fonts-emoji
,otf-font-awesome
,powerline-fonts
,awesome-terminal-fonts
To install all the necessary font packages to fonts from display various langauges and emoji
- Use
Iosevka SS08 Medium
as the default monospace font. Install it by running:paru -S ttf-iosevka-ss08
- Use
lxappearence
to change the font, icons and theme - Install
redshift
to warn the screen during night times to reduce eye strain- Enable and start:
redshift
by runningsystemctl --user enable redshift-gtk.service --now
- In order to allow access Redshift to use GeoClue2, add the following lines
to
/etc/geoclue/geoclue.conf
:[redshift] allowed=true system=false users=
- Use sddm as the display manager for linux.
- Enable and start:
Nord
themes for the following:- Emacs using the
doom-nord
theme Alacritty
nord theme colors- GTK theme using:
nordic-theme-git
i3wm
,i3bar
andi3status-rust
Nord themesrg
using custom config filebroot
using custom config filefd
,lsd
usingdir_colors
rofi
Nord theme using config fileprocs
using custom config filefzf
Nord theme by modifying the environment variablesbat
in built Nord themes- Colored
man
pages usingless
nano
UI Nord theme by modifyingnanorc
tmux
Nord theme using tpm pluginXresources
Nord theme colors by modifying.Xresources
fileZathura
UI Nord color theme by modifying config file- Install
Nord
theme forqt
applicationskvantum
and installkvantum-theme-nordic-git
- Open
kvantum-manager
and change default theme toNordic-Darker
git
Nord color theme by modifying.gitconfig
delta
diff Nord color theme by modifying.gitconfig
- Colored
sudo
andgrep
by modifying env variables ncmpcpp
by modifying the config file- Firefox Nord color theme
- Emacs using the