Originally published at deepu.tech.
One of my most popular posts of all time was when I wrote about my beautiful Linux development machine in 2019. Since I got a new machine and a new setup, it naturally calls for a follow-up.
By now, I'm a die-hard GNU/Linux user. It's been five years since I'm using Linux as my primary OS. I would take a Linux machine any day over macOS or Windows. I own a Windows gaming PC and a Macbook pro from work. Still, they are nowhere near the Linux experience, personally for me. My primary driver is my Linux laptop, and I can't be any happier with it (well, I can, I'll come to that at the end of the post).
So a Dell Precision from 2016 was my primary device until last month, and it is still going good. Fedora runs smoothly on it for most parts. There is some minor glitch now and then but nothing that bothers me. What is a Linux experience without glitches, right? 😉
But that setup is almost five years old now, and sometimes it shows from the increased CPU load and fan noise. Applications like Chrome, Slack, and VSCode aren't becoming any lighter in CPU and memory usage. So when I had a chance to get a Linux machine from my new job, thank you Okta, I went all in and got myself a Dell XPS 15 9510.
So here I'm detailing essential aspects of my setup and hoping it will inspire more people to use Linux. I also wrote about the state of Linux on the desktop. Check it out if you are interested in Linux. You might be surprised.
So when I was choosing a new laptop, I narrowed my options down to either Dell XPS 15 or Tuxedo Pulse 15. Form factor, CPU, and memory was the most important factors for me since my work involves working with Docker and Kubernetes, polyglot development and travel. In the end, I chose Dell since Tuxedo had some issues with multiple monitors via USB-C as it didn't have thunderbolt support.
This is not just my work laptop; it's my primary machine for all of the below.
- Java, Rust, JS, TS, Go and web development (and everything in between)
- Running multiple web applications locally
- Running Docker containers and local Kubernetes clusters
- Kubernetes, Terraform, CloudFormation development and deployments
- VirtualBox for Windows testing and other VM stuff
- Azure, AWS, and GCP deployments using required CLI tools
- Heavy browser usage
- E-mail, chat, and video conferencing
- Plex media server
- Writing, presentations, and illustrations
- YouTube and Social media
Machine configuration
The configuration of the machine is also quite crucial for any development setup.
I selected a custom configuration from Dell to get the best possible setup at that time. It's not cheap, but my company, Okta, provided a handsome budget. But I do think it can be a lot more competitive in pricing like Tuxedo and the like. This, in my opinion, is one of the best Laptops for developers. So here is what I have.
- Processor: Intel® Core™ i9-11900H CPU @ 4.9GHz (8 cores, 16 threads)
- Memory: 64GB, DDR4-3200MHz SDRAM, 2 DIMMS, non-ECC
- HDD: 1TB M.2 NVMe SSD
- Graphics: NVIDIA GeForce RTX 3050Ti with 4 GB GDDR6 memory & Intel® UHD Graphics
- Wireless: Killer Wifi 6 (2x2) + BT 5.1
- Keyboard: English QWERTY US, backlit
- Display: 15.6" FHD 1920x1080, matte, non-touch
- Battery: 6-cell (86Wh)
- Ports: 2 x Thunderbolt 4 USB-C, 1 x USB-C 3.2 Gen2,
I use the laptop mostly with my home office, which consists of a 34 inch and a 27 inch monitor. A Keychron K2 keyboard, Logitech MX Vertical mouse, Razer Kiyo webcam, Elgato Keylight, Fifine mic and a Dell Thunderbolt dock that drives all my peripherals and monitors while powering the laptop all using a single USB-C cable. I have an old Sony Bluetooth headset and a cheap custom amplifier running a pair of old bookshelves and a subwoofer for audio.
Operating system and desktop environment
Switching to Fedora was a great decision I made sometime in 2017, and I'm so happy with it. Updates are butter smooth. I don't have to worry about stuff breaking all the time from rolling releases. At the same time, new stuff lands every six months, and packages are updated frequently, keeping everything running smoothly. For a developer, that is an excellent combination, in my opinion. So naturally, I choose to stick to Fedora; why fix something that isn't broken, right?
So I'm running Fedora 34. I have been using Gnome for the past five years, but recently KDE caught my eyes, and I decided to give it a shot. So I went with the KDE spin of Fedora. KDE has been great so far. I love the amount of customization you can do on it, and top of all, it looks super sleek, and there is an excellent selection of themes and styles to choose from. I'm definitely not missing Gnome.
What good is a desktop without a nice theme, right? KDE has a great collection of themes, and I went with Ant-Dark theme for now, and it looks gorgeous with transparency and blur effects. While KDE themes are self-sufficient with icons, cursors, and lock screens, I switched from default icons to icons from KDE-Story theme.
I use many plugins in Gnome, but in KDE, all those came out of the box, like clipboard manager, notepad, system monitor, etc. Another reason I'm enjoying KDE.
With the new installation, I also went with the BTRFS filesystem, which is fantastic. Snapshots and backups are so fast. Though setting up snapshots and backup was a challenge initially.
Development tools
These are mostly objective choices and really don't matter as long as you are comfortable with your chosen tools. Below are my choices for some of the important categories for development.
Shell: This is one of the most important for a developer. I use ZSH along with the awesome Starship prompt as my shell. I tried to switch to Fish, but it was quite annoying due to its difference with bash/ZSH, and I gave up on it. I went with the default theme and settings from Starship as it was very close to my earlier setup with Oh My ZSH. I also use zsh-autosuggestions and zsh-syntax-highlighting plugins for ZSH and fzf for search.
Terminal: What good is a nice shell without a good terminal. Fortunately, the default KDE shell, Konsole, is great, and KDE also has Yakuake, which is one of the best terminal applications out there. It has workspaces, tabs, split windows, Quake mode, etc. I mostly use Yakuake, which is bound to Ctrl+`
IDE: Visual Studio Code - My go-to editor. I love it. I use VSCode for web development, Rust, Go, JS development, DevOps, and everything other than JVM languages. A VSCode setup is never complete without some good plugins. Here are the plugins that I'm using. You can run the script to install those. For Java development, I use IntelliJ IDEA Ultimate.
Other notable development tools I use are GitKraken for Git repo management, Beyond Compare for code comparisons, VirtualBox, NVM for Node.js version management and SDKMan for JDK version management.
Toolchains: Node.js and NPM, Rust toolchain, Golang, JVM, Deno, Ruby toolchain, and Python toolchain. I also ran sudo dnf groupinstall "Development Tools" "Development Libraries"
to install the toolchains required for compiling Linux applications.
DevOps: Docker, kubectl, Terraform, k3d, and so on
Productivity tools
Productivity tools are also quite necessary, and below are my choices.
Browser: Google Chrome is my primary browser. I also use Firefox sometimes. I use the Bitwarden plugin for password management.
E-mail: I use Mailspring as my e-mail client. It's a fairly decent mail client with nice themes and a simple UI.
Office suite: I mostly use Google Docs, but when I have to work on something on my desktop I use LibreOffice, which is a good office suite and even handles Microsoft Office & Keynote formats.
Communication: Of course I use Slack and for video conference I use Zoom. I also have Telegram and Signal installed.
Screen capture: I use this nifty tool called Peek for screen recording and Flameshot for screenshots.
Streaming & Media
Streaming: I think OBS Studio is the default choice here and is one of the best options for streaming and screen recording.
Image editing and processing: Gimp for photo editing, Inkscape for vector editing, and Draw.io for illustrations. KDE also has some default apps for photo management, which is quite good.
Video editing: Kdenlive is a great choice for video editing on Linux.
Video player: SMPlayer is my go-to video player.
Conclusion
There are many other small and nifty utilities that I use; most are command-line utilities. There are some notable mentions like Timeshift, which is nice for backing up your machine.
Of course, not everything is perfect in the Linux world, but it is the same with every OS from my experience. Before switching to Linux, I was a long-time Windows user, and last year, I spent more than a year using macOS now and then, so issues are everywhere. So like every Linux user, I have from time to time messed things up(With great power comes great responsibility, Peter). There are some minor annoyances with this new setup, but there is nothing that bothers me much. Some of the most annoying issues I have currently are below, and I'll probably fix them if it bothers me.
- New Intel platforms do not support deep sleep, and hence laptop does lose power over time, even in Idle.
- Hibernation doesn't work out of the box. It's easy to fix, but at the moment doesn't bother me.
- Some random crashes from KDE settings. Not a big deal as it's a rare occurrence.
- KDE remembers open apps on a restart, but when on multiple monitors, it doesn't remember which screen it was in.
- Biometrics is a bit tricky in Linux. The built-in fingerprint sensor doesn't have a proper driver for Fedora yet, there is one for Ubuntu, and I probably can get it working. For face recognition, there is Howdy, but for some reason, I couldn't get it working and hence probably need to do some digging.
I hope you find this inspires you to give Linux a chance. If you have any questions, please ask in the comments.
If you like this article, please leave a like or a comment.
Top comments (17)
The 2 things I miss on my HP X360 Envy is fingerprint and rotation. I have some version that simply Fedora can't detect rotation mode while I've seen others do it for older versions of x360. Now thanks for the fingerprint link I'll check that one out but I gotta say, it's just smooth experience. Didn't believe KDE was so optimized now until my current installation.
Let me know how the fingerprint trial goes, make sure your reader is a Goodix one coz the steps are for that particular hardware
Sadly I don't think it is. But I'll try finding similar solution for mine if it happens that I could find proper model. Sometimes names in the system are incorrectly shown and HP and others don't really have a good database for exact laptop model. It's kinda hard to find. But I'll try still
Let me know how it goes
Tried replacing those goodix with broadcom libs but didn't work. I doesn't crash or anything just fingerprint is not detected so I guess I'm giving up
Did you look into Framework? It's an interesting concept of building your own laptop.
How much did this custom laptop cost you?
Yeah I think too, it is quite good laptop but they still got many things to improve; If they can add gpus then it is gona be game changer. But it is kinda funny when your whole setup is open source as linux and framework both give freedom to user.
I totally agree. Open source is such a game changer. Even Microsoft has embraced it.
Yeah, A great future awaits for us. I kinda feel very lucky to be alive in this era.
The Dell costed around 2700€. Actually ordering from Dell website is a lot more expensive (300 to 400 difference) than retail shops, but unfortunately none of the retail shops had i9/64g version.
I did. Not sure if they ship to EU. But anyway I would have considered if I could configure processor and memory
Every time I try KDE in a VM it has more jank than a super Mario maker level.
Is that jank VM only?
I don't get it. What is jank?
It's buggy
yes indeed there are some minor bugs here and there but nothing major and nothing annoying. TBH, there are similar issues in macOS and Windows as well.
Nice looking setup!
And I upgraded to fedora 35 yesterday. Buttery smooth upgrade in around 15 minutes. Just had to restart the pipewire service after upgrade everything else worked fine