My Dev Enviroment


You know that feeling when you spend three hours configuring your editor just to avoid writing code? Yeah, it took me a couple of months to realise I was spending too much time on rice than on actual work.

So … after countless late-night sessions tweaking my dotfiles, I finally accepted the truth: done is better than perfect.

Here are some thoughts from shifting focus from working on my dev enviroment to working in my dev enviroment.


The Problem: When I first switched to linux.

Oh glorious feature creep. Every new video, article, and recommendation had me opening the package manager. Installing IDEs packed with features I’ll never use, desktop environments that look pretty but eat RAM, and tools that solve problems I don’t actually have.

The result? A system that’s slow, distracting, and breaks in mysterious ways.

Upon reflection my goal became: maximum productivity, minimum overhead, still sexy. Every tool had to justify its existence by solving a real problem I faced daily (and had to look good doing it).


The Core Philosophy: Terminal-First

Here’s the constraint that shaped everything:

If I can do it in a terminal, I will.

The Full Philosophy

  1. Keyboard speed: My hands should rarely leave the keyboard
  2. Resource efficiency: Terminal apps use a fraction of GUI resources
  3. Reliability: Text-based tools rarely crash, and if they do they tell me why
  4. Consistency: Similar keybindings across all applications
  5. Sexiness: What’s the point of ricing if it looks shit?

Note: I do rarely use a GUI for some things. The key outcome is speed. And a GUI is quicker at some things.


The Stack (And Why Each Piece Matters)

OS: Arch Linux

Problem solved: Bloatware and unnecessary services.
Why it works: You only get what you explicitly install. No background processes you didn’t choose.

Getting started:

# Use archinstall for a guided setup
# Or follow the manual installation guide at archlinux.org
# (I use arch btw)

Display: Wayland

Problem solved: X11’s aging architecture and security model
Why it works: Better performance, security, and multi-monitor support

# Comes on the archlinux ISO. Just pick it during install.

For NVIDIA users (this was the biggest hurdle), add to /etc/environment:

LIBVA_DRIVER_NAME=nvidia
XDG_SESSION_TYPE=wayland
GBM_BACKEND=nvidia-drm
__GLX_VENDOR_LIBRARY_NAME=nvidia

Window Manager: Hyprland

Problem solved: Keyboard control, tiling windows, yummy visual features.
Why it works: Tiling means every pixel is useful, and keyboard shortcuts replace mouse movements

# Install from official repos (more stable)
pacman -S hyprland waybar dunst

# Or bleeding edge
yay -S hyprland-git

Key insight: The transition from mouse-heavy to keyboard-heavy workflows is faster (and funner).


Terminal: Kitty

Problem solved: Terminal fatigue from ugly, slow interfaces
Why it works: Hardware acceleration, good font rendering, and modern features

pacman -S kitty

When you’re staring at a terminal 8+ hours a day, it better look fucking nice.


Shell: ZSH

Problem solved: Bash’s limited tab completion and customization
Why it works: Better globbing, completion, and plugin ecosystem

pacman -S zsh zsh-completions
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
chsh -s /usr/bin/zsh

Browser: Firefox

Problem solved: Privacy invasion and resource bloat from Chromium-based browsers Why it works: Better privacy defaults, extensive customization, and alignment with FOSS philosophy

pacman -S firefox

For maximum privacy, consider the arkenfox user.js project. It’s a hardened Firefox configuration that disables telemetry, fingerprinting, and other privacy-invasive features while maintaining usability.


Editor: Neovim

Problem solved: IDE bloat vs. editor limitations
Why it works: Infinitely customizable, but you choose exactly what to enable

pacman -S neovim

The key realization: You don’t need AI autocomplete, extensive linting, or 50 plugins. Start minimal and add tools only when you hit specific pain points.


Files: Yazi

Problem solved: Slow GUI file browsers, mucking with themes, the disgust upon opening a fm gui.
Why it works: Thumbnails in the terminal? Visual navigation? Looking cool? Yazi checks the boxes.

pacman -S yazi

Application Launcher: Rofi

Problem solved: Nested menus and mouse-dependent app launching
Why it works: Fuzzy finding means typing “fire” launches Firefox

pacman -S rofi
# For Wayland
pacman -S rofi-wayland

Everything Else

# Media and monitoring
pacman -S cmus cava btop

# Document viewing
pacman -S zathura zathura-pdf-mupdf feh

# Because why not
pacman -S tty-clock

The Complete Installation

Here’s everything in one go:

# Core system
pacman -S hyprland waybar dunst kitty zsh zsh-completions neovim \
          yazi rofi cmus cava btop zathura \
          zathura-pdf-mupdf feh tty-clock

# AUR packages (install yay first)
yay -S hyprland-git rofi-wayland

# Shell setup
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
chsh -s /usr/bin/zsh

The Real Benefits

After six months with this setup:

  • Faster context switching: No waiting for applications to load
  • Less distraction: No notification popups or visual clutter
  • Better focus: Full-screen terminal sessions create flow states
  • Easier maintenance: Text-based configs are debuggable and portable

Getting Started

Don’t try to replicate this exactly. Instead, identify your biggest productivity bottlenecks and replace them one tool at a time. Start with your most-used applications and work outward.

As much as I love the aesthetic of using a terminal for everything that isn’t what this is about … it’s about building an environment that disappears when I’m working, letting me focus on the problems that actually matter.

Your mileage may vary. But if you’re spending more time configuring your tools than using them, maybe it’s time to embrace “good enough” and get back to building things that matter.