My Desktop Linux Setup as a Developer
Background
As a Backend Developer with 7+ years of experience building systems for websites and mobile apps, I’ve been using Linux as my daily driver since 2010. My journey started with Ubuntu exclusively, but I’ve since migrated primarily to Arch Linux. I regularly evaluate other distributions like Pop OS and Debian to stay current with the Linux desktop ecosystem. For newcomers seeking a hassle-free desktop experience, I typically recommend Pop OS, while Debian remains my go-to choice for server deployments.
Hardware & Desktop Environment
My primary development machine is a Thinkpad T470. The Lenovo Thinkpad series has excellent compatibility with Linux distributions. Despite having hybrid graphics, I primarily utilize Intel graphics for most workloads.
I perform manual Arch installations and alternate between KDE and Gnome desktop environments:
- KDE: My preferred personal environment for its customization options
- Gnome: Currently offers better Wayland support (though KDE is making significant progress)
Software Management Philosophy
I maintain a minimalist approach to software installation:
- System-integrated applications (IDEs, etc.): Installed via Pacman (or apt on Ubuntu)
- Other applications: Managed through Flatpak for clean installation/removal
While Flatpak’s security sandboxing will be its most compelling feature in the future, this capability is still maturing.
Essential GUI Applications
My core graphical applications include:
Productivity & Development
- Visual Studio Code (FOSS version): Primary text editor
- PyCharm Professional: Python IDE
- LibreOffice: Office suite
- Terminator: Primary terminal emulator (with Gnome Terminal and Konsole as backups)
Web & Communication
- Firefox: Primary web browser
- Ungoogled-Chromium: Secondary browser for Chrome-optimized content
- Thunderbird: Email client
- Evolution: Calendar and Contact management (CardDAV/CalDAV)
- Web Services: Nextcloud, Bitwarden, Zoom, Discord, Telegram, Spotify
Media & Graphics
- VLC: Media player
- Shotwell: Image viewer
- Glimpse: Advanced image editor
- Cheese: Webcam application
- Handbrake: Video converter
- OBS: Screen recording/streaming
System Utilities
- Gparted: Partition manager
- Desktop Environment Tools: Native file managers (Nautilus/Dolphin), document viewers (Okular/Evince), and text editors (Gedit/Kate)
Entertainment
- Steam: Gaming platform
Command-Line Environment
I apply the same minimalist philosophy to my command-line setup, focusing on core utilities from package managers while using environment managers for language-specific tools:
Core Tools
- Neovim: Advanced text editor
- Essential Utilities: tree, curl, htop, git, jq, s3cmd, duplicity, vnstat, nethogs
- Development Tools: base-devel (Arch) or build-essential (Ubuntu) for compilation support
Environment Management
- Pyenv: Python version management for development
- NVM: Node.js version management
- Pipx: Isolated Python application installation to maintain system Python integrity
- Docker: Containerized application development and deployment
Configuration
- Custom bash and vim setup via my dotfiles
Setup Process
While some users employ configuration management tools like Ansible or bash scripts for system setup, I prefer manual installation since I only refresh my OS every 18-24 months. The entire setup process typically takes 2-3 hours.
I’m satisfied with my current configuration but always looking for improvements. If you have questions or suggestions about my Linux setup, please contact me.
Desktop Linux has evolved tremendously over the years, making it a pleasure to use for daily work. If you haven’t experienced it yet, I highly recommend giving it a try!