Welcome to this series, where I’ll introduce you to the software tools that are integral to my daily workflow.
It took me more than 3 years to reach my ideal desktop environment.
FYI: This series isn’t about minimalism; I utilize a powerful computer and aim to harness its full capabilities.
Why though?
Before transitioning to Linux as my primary operating system, I alternated between Windows and MacOS. Initially, moving to MacOS felt like an upgrade due to fewer technical difficulties compared to Windows. However, even within the MacOS environment, I encountered a significant obstacle while coding. I frequently found myself pausing to move my hand away from the keyboard to adjust the cursor—whether it was for selecting text, scanning through code, or managing files. Additionally, navigating between multiple windows (which was often the case for me) using the alt-tab shortcut proved to be cumbersome.
Moreover, regardless of whether I was using Windows or MacOS, each time I powered up my system to begin work, I inevitably spent precious minutes opening essential applications, resizing windows, arranging them across different workspaces, and executing various commands in the terminal for each project. This repetitive process prompted me to question whether there was a more efficient approach to streamline my workflow.
Transitioning to a Keyboard-Centric Code Editor
To address the pausing problem, I took steps to enhance the efficiency of my code editing process. Initially, I increased the number of shortcuts in my code editor. However, to fully resolve the issue, I realized the necessity of transitioning to an editor with a keyboard-focused workflow. In today’s landscape, there are several viable options available:
After weighing the options, I opted for the most widely used: Neovim.
Exploring Window Managers
To address the challenge of window management, I ventured into the world of Window Managers. These indispensable tools in my workflow empower me to pre-configure the placement, positioning, and sizing of all my windows and applications. Furthermore, they offer the flexibility to assign shortcuts for launching any program or script, and manipulating window properties directly via keyboard commands.
Streamlining Workflow with Scripting Automation
Another challenge I encountered was the need to automate terminal commands and program launches to expedite my workflow. This was successfully addressed by leveraging Kitty Startup sessions.
Transitioning to Linux
While using MacOS, I experimented with Yabai, a Tiling Window Manager. However, configuring it to suit my preferences proved challenging. I encountered difficulties utilizing the CMD key for keybindings due to conflicts with existing programs keybindings. Additionally, as a tiling window manager, Yabai tiled all applications by default, including sub-windows, which felt cumbersome. Ideally, I expected sub-windows to appear in a floating mode. To overcome this limitation, I had to manually select which apps should tile.
These challenges ultimately led me to transition to Linux. In the Linux ecosystem, the possibilities are virtually limitless. With the vast majority of software being open source, customization knows no bounds. The only limitation is your imagination; you can tailor software to precisely fit your requirements.
Challenges with the New Paradigm
Now that I’ve transitioned to Linux and adopted Neovim as my primary code editor, I’ve noticed a significant amount of time spent on configuring it. It seems like an endless cycle, as there are continually new and improved alternatives emerging, along with updates to existing apps that often introduce breaking changes or new bugs. To manage this, I’ve adopted a routine of updating all my software and apps every six months. This helps me stay current with the latest features and fixes, ensuring my workflow remains efficient and optimized.
Software I use
Below are the essential tools integral to my workflow. I’ll delve deeper into each one in subsequent posts in this series:
Posts in the series: Crafting the Perfect Linux Desktop
- Embarking on My Linux Desktop Journey — Pt. 1 (You are here)
- Exploring DWL — Pt. 2