Skip to Main Content
Image
My dev setup is better than yoursBack to Top

My dev setup is better than yours

By tr1x_em
8 minutes

In this blog, I would be talking about my dev setup and workflow. This is (little bit) inspired by Primagen’s Course.

TL;DR: Here is my dotfiles repo: Link

Dotfiles management

What are dotfiles? Well dotfiles are hidden configuration files on Unix-based systems, such as Linux and macOS, that store settings, preferences, and configurations for various applications, tools, and the system environment. So that means if you can transfer your dotfiles from one device to another device, your whole configuration (including themes) should stay the same.

For dotfiles management, I use GNU Stow it just does a simple thing, it would create symlink of files to their actual directories. For example, I have stored my .config inside ~/dotfiles/config/.config (dotfiles is a git repo btw) what stow does is that it takes files ~/dotfiles/config/.config from there and symlinks it to their actually location i.e. ~/.config/ so when ever I update a config it is always stored in ~/dotfiles which being a git repo gives me ability to back up my whole folder on GitHub.

I recommend you watching the following video if you want to learn more about stow

Here is my dotfiles repo: Link

Why use a Tiling Window Manager?

Flux

Flux

A desktop environment is a graphical user interface (GUI) that runs on top of an operating system, providing users with a visually intuitive way to interact with the system.

I prefer tiling window manager, Why? Because they remove the overhead of managing windows from me, and generally it’s keyboard driven and as you know the more you can remove the need for a mouse the more productive and smooth your workflow gets.

I use Hyprland, why? Because firstly it’s a tilling WM, and secondly it has awesome customization and looks (I love blur btw) but any tilling wm of your choice would suffice. And no I don’t care about Wayland vs Xorg, I have used sway,i3,DWM in the past, and it’s just I want a good-looking desktop (as you can see in banner). Talking about the photo, it’s my own shell that’s called Flux, which is made in Ignis. It’s just suited according to my preference, but yeah it looks good (specially the depth effect). If you are a new user, I would recommend you reading the Hyprland’s Wiki as it’s simple and straight forward (and looks good)

What do I look in a shell?

It could be also said as why I made flux, I have a 15.6 inch display(which is quite average) and to maximise the use of all space available on my screen I need a bar which is small but still shows important things. Also, I don’t like the idea of having a bottom bar imagine the closest thing to you is a bar staring at you also it gives windows like feel to me. Besides, It has all network and miscellaneous controls built in, so I don’t need any external app to manage all of this.

Tools

Now I will list down the tools I use on a daily basis.(all the configs related to them are in my dotfiles repo)

Editor: Why Neovim?

Neovim

Neovim

I personally use Neovim because it’s vim (and vim movements) and on top of it, it’s highly customizable with a lot of plugins. If you ask me, what’s one thing that made my dev experience 100x better? It’s learning Vim movements, and aside from the productivity parts, it actually makes the code writing an enjoyable experience. It might be a bit overwhelming to learn vim movements at first but trust me on this one it’s 100% worth it. To learn, I would suggest watching this playlist Vim as your editor by theprimagen.

Terminal Multiplexer: Why Tmux?

Tmux

Tmux

A terminal multiplexer is a software application that allows multiple pseudoterminal-based login sessions to be multiplexed within a single terminal display, terminal emulator window, or remote login session.

Basically, it lets you create more than one non-volatile (sessions would not stop if terminal is killed). You would be thinking, why not just use diff window? Well, yeah you can, but what if u need nine windows simultaneously? That’s where tmux comes in, you can have as many shell (or windows) as you like while still being in one terminal. Another use case it like if you are ssh’d into a VPS what if u need more than one shell you have to ssh from a diff terminal window but if u use tmux only one ssh login can do it, and also it could run in background so u won’t need something like screen. Also, you can split panes and do things like re-ordering and making more sessions, which made it a core part of my workflow. If you want to learn more about tmux Dreams of Code have a great video on it.

AI Assistance: Opencode and Supermaven

Opencode

Opencode

Personally, I don’t like using AI in development side, as I don’t think we are at that stage where AI could write a dependable piece of code. Neither do I like nor support the idea of Vibe Coding. But on other time like for creating a generic bash script or finding out grammatical mistakes I think Opencode is best, It’s open source, the developer is super friendly, and it’s not model bound that means you can use any model even bring your own local LLM.

I personally don’t like the idea of AI inside your editor like one half of your editor is full of prompts and things like this, I prefer an outside of editor and terminal based agent so I could just use tmux to create a window for it. It’s just my preference of keeping editor and agents different, and I guess most of the people have the same?(unless they are vibe coding?)

The thing I like inside my editor is AI based autocomplete, it comes in handy in most of the place. I personally use Supermaven because it’s fast, free and correct(most of the time) and also they got a Neovim plugin that’s why too.

Terminal: Ghostty

I don’t really care about it, I just use Ghostty. I don’t think it creates any difference, they are all the same.

Hyprscrolling

Scrolling Layout

I use Hyprscrolling plugin to add features of a scrolling window manager to Hyprland. It’s been a month since I started using it and it’s great. But it totally depends on preferences, I just happen to like it.

Container based development

Now this I learnt recently, and it’s already a core part of my workflow

If you use Systemd it comes with Systemd-nspawn which technically creates a minimal Linux distribution (headless) which I would say is like an isolated part of your distro. It’s like the chroot command, but it is a chroot on steroids. By using containers, I can keep the host system minimal while maintaining separate, well-organized environments for different tasks. If you want to know more about this, you can refer to Gaspar’s blog on how he manages his devlopment containers.(shout out to him as he taught me this too)

Hornable mentions: Non Development tools

Conclusion

If you asked me what are the top two things you should adopt from this, I would say learning vim movements (just movements, not Neovim) and tmux, they alone would make a massive addition in your workflow.

If you got any suggestions or tools that you use everyday, let me know, maybe I could use them as well??

And my setup could be not better than yours (or it could be) but it surely is perfect for me 😉

QR Codehttps://mastodon.social/@tr1x_em/115712672665196586

Comments

You can comment on this blog post by publicly replying to this post using a Mastodon or other ActivityPub/Fediverse account. Known non-private replies are displayed below.

Open Post