All the dot-files for my Arch Linux installation with i3-gaps as the tiling window manager
- Install and use
zshas the default shell by runningchsh -s $(which zsh) - Install zimfw by following the instructions in readme
- After installation, run
zimfw installfollowed 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
grepUBER, 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
pingtool, making the output prettier, more colorful, more compact, and easier to read. - Replace
pingwithprettypingusing 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-binfromAUR - 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
ntppackage and enable the ntp service - Run the following commands to disable
systemd-timesyncdsystemctl 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
.zshenvfile:# locale configuration export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8
- Install
xorg-xmodmapfor keyboard configuration: Left control is nowhyperand Caps Lock is nowcontrol - Enable sticky keys are enabled without locking using
xkbset - Add hook to suspend so that
xmodmapis run andsticky keysare enabled after computer is resumed. This is necessary because X keyboard settings are reset after suspend.Create a file
/etc/systemd/system/[email protected][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.targetAnd run
sudo systemctl enable [email protected] - 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=lockThis will enable the system to:
suspendwhen pressed the power button instead of shutdown- If the laptop lid is closed,
lockthe system
- Use
i3lockas the lockscreen for i3 and configure it like so:- Setup an alias for
i3lock:alias i3lock="i3lock && echo mem > /sys/power/state"
- Use
xsslockto runi3lockwhen the system is locked - Use
xidlehookto lock the screen after 10mins of inactivity and suspend computer after 10more minutes of further inactivity
- Setup an alias for
TLPandthermaldfor power management for laptops:- Enable
tlp.servce - mask the systemd service
systemd-rfkill.serviceand socketsystemd-rfkill.socket - enable
thermald.service. This will reduce the CPU clock if temperature exceeds a threshold
- Enable
- copy
low-battery-alert.serviceandlow-battery-alert.timerto/etc/systemd/system/and enable both of them by runningsudo systemctl enable low-battery-alert.serviceandsudo systemctl enable low-battery-alert.timer.- Install
acpifor fetching laptop battery status
- Install
- Run
mkdir -p ~/.config/mpd/playlistsand enablempdservice by running:sudo systemctl enable mpd.service - Use
ncmpcppas the client formpd - Install
mpDris2(from AUR) and enable it by runningsystemctl --user enable mpDris2 - Install
playerctlandpulseaudio-ctlfor media controls. This allows us to add notifications and maximum volume limit for system volume - Install
alsaandpulseaudio:alsa-utils,alsa-plugins,pluseaudio-alsa - Use
VLCas the media player for videos. Enable hardware acceleration for decoding by installing:intel-media-driver,libva-utils,xf86-video-inteland 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-utilsandblueman(front end for bluetooth) - Enable and start bluetooth service:
sudo systemctl enable bluetooth.service --now
- Install
KeepassXCas the default password manager for linux. Also, enable the browser integration and install plugins for chrome and firefoxufw: simple firewall for linuxenable
ufw.serviceafter installation and runsudo ufw default denyto enable the firewall- change the default DNS resolver to
1.1.1.1by editing thenameserverentry in/etc/resolv.confand 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_environmentfile - If you are running
opensshverison > 7.2, add these to~/.ssh/configfile: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/configfile and change permissions by:chmod 600 ~/.ssh/config - Start the
ssh-agentservice:systemctl --user enable ssh-agent --now
- Add
- Use
Zathuraas 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
zathurathe default PDF reader for opening applications in firefox, or other GUI applications by modifying themineapps.list - Make
zathurathe defaultReaderapplication by adding the following lines in your.zshenvfile:export READER="zathura"
- Install the following packages:
- Use
libreoffice-freshpackage for installing libreoffice - Dictionary and thesaurus config:
- Install
arthaas the thesarus for linux. Bind its shortcut toHyper+Alt+t - Install
goldendictwith websters 1828 dictionary by following: this guide . Bind its shortcut toMeta+Alt+t
- Install
- Install
hunspell,hunspell-en_US,hunspell-en_GBfor spell checker - Install
dictdfor English to other language dictionary translations - Install
texlive-mostandpygmentsfor a complete latex environment - Install
pdf-toolsto be able to view PDF file inside emacs usingpoppler - Install
pandocfor converting documents from one format to other
GNU Emacs: My choice of text editorPostmanfor testing HTTP requestsZealfor offline documentationSource Trailfor browsing C/Cpp and Python projects visually- Install LibreOffice from
libreoffice-fresh(in AUR) Plantumlfor creating control flow and other diagramsdbeaver(open source Database viewer)Wiresharkfor 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-centerfor getting notifications for i3 - Install
rofias the application launcher - Use i3status-rs as the bar for i3wm
- Use
numlockxto enable numlock functionality - xbanish: banish the mouse cursor when typing, show it again when the mouse moves
- Use
fehto set the wallpaper background - Use
i3lockas the locker for i3wm - Use picom as the display compositor for i3. Install from
git, for Archlinux, install usingpicom-gitfrom AUR.- Use
experimental backendsoption when running picom, otherwise theglxbackend 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
xdotoolto take desktop screenshots.xdotoolis 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-backlightbrightness of the screen - Install
xorg-xinputfor enabling/disabling touchpad - Use clipmenu as the clipboard manager for Linux:
- Enable and start the
clipmenudservice:sudo systemctl enable clipmenud --now - set
CM_LAUNCHER=rofi, so that you can use rofi to view clipboard
- Enable and start the
- Use
nm-appletwhich will provide a tray for NetworkManger - Set
firefox-developer-editionas 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-trayto get a tray icon for bluetooth. This requiresbluemanto 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
nordicas the default GTK theme andpaper-icon-themeas 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-fontsTo install all the necessary font packages to fonts from display various langauges and emoji
- Use
Iosevka SS08 Mediumas the default monospace font. Install it by running:paru -S ttf-iosevka-ss08 - Use
lxappearenceto change the font, icons and theme - Install
redshiftto warn the screen during night times to reduce eye strain- Enable and start:
redshiftby 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:
Nordthemes for the following:- Emacs using the
doom-nordtheme Alacrittynord theme colors- GTK theme using:
nordic-theme-git i3wm,i3barandi3status-rustNord themesrgusing custom config filebrootusing custom config filefd,lsdusingdir_colorsrofiNord theme using config fileprocsusing custom config filefzfNord theme by modifying the environment variablesbatin built Nord themes- Colored
manpages usingless nanoUI Nord theme by modifyingnanorctmuxNord theme using tpm pluginXresourcesNord theme colors by modifying.XresourcesfileZathuraUI Nord color theme by modifying config file- Install
Nordtheme forqtapplicationskvantumand installkvantum-theme-nordic-git- Open
kvantum-managerand change default theme toNordic-Darker
gitNord color theme by modifying.gitconfigdeltadiff Nord color theme by modifying.gitconfig- Colored
sudoandgrepby modifying env variables ncmpcppby modifying the config file- Firefox Nord color theme
- Emacs using the