Karambir Singh Nain

My Desktop Linux setup as Developer


I am essentially a Backend Developer. I have been developing backends for websites and mobile apps for 7 years now. I have been using Linux as my daily driver since 2010. Previously it was exclusively Ubuntu and now it's mostly Arch Linux. I try out Pop OS or recent Debian from time to time just to see how is the experience on those distros. Pop OS has been my recommendation for anyone wanting a good desktop solution that just works. Debian is my preferred distro for servers.

My main dev machine is Thinkpad T470. All the linux distros works well with Lenovo Thinkpad series. Though mine has hybrid graphics, I tend to use Intel graphics for most tasks. I install Arch manually and use KDE or Gnome on top. Both have pros and cons, and I jump between the two quite often. I like KDE better as personal desktop environment but Gnome works better with Wayland(for now, KDE devs are working hard). I also like to keep only essential programs installed for me. Most of the programs which require deep integration with OS(like IDEs) are installed by Pacman(or apt for Ubuntu) and others by Flatpak. I like how I can cleanly add or remove programs via Flatpak. Though security sandbox is gonna be biggest feature going forward. It is not there yet.

Here are the GUI programs I have on my machine most often:

  • Firefox - Primary web browser
  • Ungoogled-Chromium - Secondary browser for stuff that just works on Chrome
  • VLC - Primary media player
  • LibreOffice - Office suite
  • Gparted - Robust partition manager
  • KDE or Gnome provided file manager(Nautilus/Dolphin), document viewer(Okular/Evince) and text editor(Gedit/Kate)
  • Visual Studio Code(FOSS version) - Primary text editor
  • Pycharm Professional - IDE for python programming language
  • Terminator - Primary terminal emulator with Gnome terminal and Konsole as backup
  • Thunderbird - Truly one of the best email application
  • Evolution - Calendar and Contact management via CardDAV and CalDAV standards
  • Shotwell - Image viewer
  • Cheese - Simple webcam app
  • Glimpse - Advanced image editor
  • Steam - For games
  • Handbrake - Video converter
  • OBS - Video recording software
  • Web services related apps like Nextcloud, Bitwarden, Zoom, Discord, Telegram and Spotify

These cover almost everything I need to do with my computer.

For command-line, I do something similar. Have only core utilities and programs from pacman and use tools like pyenv, docker, nvm to use occassional packages or things that can pollute the system.

  • vim
  • Utilities like: tree, curl, htop, git, jq, s3cmd, duplicity, vnstat, nethogs
  • base-devel or build-essential(Ubuntu) for easily compiling other packages
  • pyenv - manage python installations and use them for python development
  • nvm - same for node
  • pipx - install adhoc python applications as executables in their isolated environments. This keeps the system python clean
  • configure bash and vim with my dotfiles

Some folks use configuration management software like ansible or just bash scripts to set their desktop. As I install/change OS once every 18-24 months, I just do this manually. It takes around 2-3 hours to set everything up. I am currently happy with my setup and would like to make it even better. If you have any questions or want to share your thoughts about my linux setup, contact me.

Desktop Linux has come a long way and it is a breeze working with it. I suggest you try it if you haven't already :)