Welcome to my GitHub repository where I share my developer setup and dotfiles. I've designed this environment to be fast, minimal, and feature-packed, yet aesthetically pleasing. I have optimized this setup for my software engineering and devops projects. I went through HOURS of pain to come up with this config so you don't have to!
Tool / Environment | Description |
---|---|
OS | Arch Linux |
Terminal | kitty |
Multiplexer | tmux |
Text Editor | nvim |
Shell | fish-shell |
Prompt Theme | starship |
Window Manager | Hyprland |
Display Manager | ly |
Notification Daemon | Mako |
System Info Tools | neofetch, btop |
Screen Locker | swaylock |
Status Bar | waybar |
File Manager | yazi, thunar |
App Launcher | fuzzel |
To replicate my setup:
- Install Arch Linux: Follow the official installation guide for desktop profiles.
- Clone this repository:
- Run installation script:
- Copy repo config files to local config:
git clone https://github.com/sa-akhavani/dotfiles.git && cd dotfiles
chmod +x ./install.sh
./install.sh
cp -r ./.config/* ~/.config/
cp -r ./etc/* /etc/
I was an Ubuntu user for a long time (7+ years). I eventually decided to migrate to Arch Linux to be able to control every single aspect of my os and also improve my linux knowledge. I love Arch's lightweight nature. Fits perfectly with my minimalistic approach. Arch's package manager, pacman, and AUR are a blessing! you have to use it to see how good this is!
Now that Wayland is becoming stable and lots of people are creating packages for it, Hyprland is an amazing tiling window manager for wayland. It's highly customizablity and native Wayland support significantly enhance my workflow compared to traditional X11 setups. It's time to put X11 to rest. Also, it is better than Sway in my opinion.
I Have tried KDE and GNOME display managers in Ubuntu and Kubuntu
But both of them are extremely bloated.
So I chose Ly
as my display manager, keeping everything minimal.
- Fish: Smart and user-friendly command line shell. Includes syntax highlighting, autosuggest-as-you-type, fancy tab completions
- Starship: Minimal, blazing-fast, and customizable prompt for any shell!
- ZSH (Alternative to Fish): Unix shell with tons of quality of life features.
- Wezterm: a GPU-Accelared cross-platform terminal emulator that supports font ligatures
- Tmux: Highly customizable terminal multiplexer
- Kitty (Alternative to Wezterm): Cross-platform, fast, feature-rich, GPU based terminal.
- My go-to editor is Neovim, a Vim-based powerhouse equipped with thousands of plugins and features. It strikes a balance between functionality and efficiency that I'm proud to use.
- I mainly use Neovim but I also use other IDEs if I am working on a project with a huge codebase. I am not crazy :D
- I spent a lot of time coming up with something that is not bloated but a ton of features and am very proud of this config.
- Fix waybar keyboard layout change in multiple keyboards
- Fix waybar privacy module issue with cava
- Switch updater module to this: -- https://github.com/coffebar/waybar-module-pacman-updates
- Fix browser font
- Figure out how mono fonts issues are solved and which font to use
-
waybar-git package in AUR has set cava to be disabled. So you either have to clone the AUR git repo and build it using mkpkg OR clone the github repo and build it using that. Alexays/Waybar#2781 (comment)
-
Don't forget to regularly check for updates!
-
Also before that, you MIGHT need to fully remove / or install libcava and cava from your system.
yay -R cava libcava
sudo rm -rfv /usr/lib/libcava.so
sudo rm -rfv /usr/lib64/libcava.so
sudo rm -rfv /usr/lib/pkgconfig/cava.pc
sudo rm -rfv /usr/lib64/pkgconfig/cava.pc
sudo rm -rfv /usr/include/cava
yay -S libcava
cd /tmp
git clone https://aur.archlinux.org/waybar-git.git
cd waybar-git
vim PKGBUILD
# change Dcava=diabled -> Dcava=enabled
# add Dmpd=enabled
makepkg
# Then install it using:
pacman -U <output_package_name>
- Make sure to set method to pipewire. fot method DO NOT use alsa
- For the source, it will automatically try to get it from the output
- If not, use
wpctl status
, then under Audio, Sinks, Pick the number that represents the speaker. Or usepactl list sources
and in the output, find the speaker and use its number as the value of the source - https://github.com/karlstav/cava?tab=readme-ov-file#pipewire
- karlstav/cava#422 (comment)
- You can check and monitor it using coppwr OR helvum
- https://askubuntu.com/a/854029/1011286
- https://github.com/Alexays/Wayklbar/issues/2929#issuecomment-2031721187
cat /sys/class/thermal/thermal_zone*/temp
# To see what zones the temperatures are referring to use:
paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) | column -s $'\t' -t | sed 's/\(.\)..$/.\1°C/'
INT3400 Thermal 20.0°C
Setting up nvm in fish is a pain. These are some resources that help.
I should read this: https://www.bugsnag.com/blog/tmux-and-vim/
While setting up the Spotify client for Linux, I encountered a few quirks. If you're using NetworkManager with iwd together (don't do that:D), you have to stop NetworkManager service to be able to use spotify.
Also, hyprland windows don't have a menu. bar. To toggle offline mode, you can press Ctrl-Shift-o
.
For more troubleshooting tips, check out these resources:
I use FiraCode
font mainly.
Do not install patched nerdfonts. I install FiraCode alone, then install
Symbols Nerd Font Mono
separately from their releases.
check: https://github.com/ryanoasis/nerd-fonts/releases
sudo pacman -S ttf-fira-code ttf-nerd-fonts-symbols-mono
You need to install ydotool
and fusuma
and configure them.
fusuma config is in .config/fusuma/
folder
Make sure NOT to give sudo permission to ydotool at all!
if adding stuff to hyprland didn't work do this: systemctl --user enable ydotool.service systemctl --user start ydotool.service
if this also didn't work try this: iberianpig/fusuma#173