Introduction
Acknowledgments
To my mom, who always encouraged me and supported me in everything I wanted to do in my life, including writing. What she did for me cant be described in words.
The biggest thanks for my girlfriend Antje, who always supported me in my weirdest dreams, in the bright and dark moments, without judgments. Antje, thanks for being on my side. We need more people like you in this world.
Thanks to Jan Mollowitz and Martin Ohmann, who pushed me to try most of the tools I describe in this book. I thought it would be a waste of my time; I was terribly wrong.
Im not a native English speaker, so I needed some serious proofreading. The proofreaders of this book didnt only help me to improve it: they provided great suggestions and kind encouragements I definitely needed. Thanks to (in no particular order): Tim Collins, Dr. Robert Koss, Zack Teska, Greg Wagner, Colin Roberts, Ariel Don, Ben Reedy, and Joe Gurr.
To all my friends, to everybody who support my work in any way, and to all the kind, peaceful, and merciful people in this world: thanks a lot!
And finally, thank you, dear reader, for picking up this book. I really hope youll enjoy it!
Welcome, Mouseless Developers
With this book well embark, together, in a creative journey where well build an efficient and Mouseless Development Environment. Well go from the void of an empty hard disk to a complete system you can mostly use with a keyboard. Well install everything manually at the beginning, and well become an omniscient entity able to summon the whole development environment with one command at the end.
There are huge benefits to install a complete system by ourselves: well learn a tonne along the way. Its good to use tools to achieve our goals, but its even better to know a little about how they work. It will also allow us more flexibility to modify whatever we want according to our needs.
Knowledge brings flexibility, and flexibility brings efficiency.
Our secret weapon? The command-line. Well use it for almost everything well do throughout this book, because its simply the most powerful tool we can use. Its consistent, it doesnt get out of fashion, it doesnt get in our way, it doesnt dramatically change when new versions are available. It will make your life easier and it will give you tremendous power. Who doesnt want that?
If you need more arguments to convince you that the command-line is what you need to level up to a higher plane of existence (at least), here we go:
- As developers, we often have to deal with Linux-based systems on servers (or containers) where only the command-line is available.
- Command-Line Interfaces (CLIs) dont have any graphical interfaces. To use these programs, we have no choice: we need the shell. Keep the acronym CLI in mind: well use it often throughout the book.
- The shell gives you the ultimate power we all seek: automation. Its difficult to automate the movements of your mouse on a graphical interface; its easier when you deal with plain text, like the command-line.
This book will explain everything for you to understand what were doing, why were doing it, and how you can personalize your system according to your needs. To your workflow. To your personality. The goal: acquiring the knowledge you need by practicing and experimenting. Youll then be able to transfer this knowledge on any development environment you want, even if its based on another Linux distribution, or if you want to use a more standard IDE instead of Neovim, for example. You can even use most of the tools described in this book on macOS.
Now, a bummer: we wont dive deep into everything well talk about, or this book would become way too long for us to survive it; both the poor writer and the poor readers. Instead, it will focus on showing how the different tools described in this book can work together.
That said, each chapter of the book concludes on a list of resources you can read to satisfy your infinite curiosity.
Who Should Read This Book?
Everyone can read this book, but not everybody will get the most value out of it. So, should you read this book?
If youre a beginner in software development, this book is for you. I try to explain everything you need to know to understand what were doing. Yet, it can be a bit tough on you because its a lot of information to swallow at once. My advice: go slowly, dont hesitate to try things out, to experiment, to play with the command-line. This book will be truly rewarding if you put the effort and some patience.
If youre a seasoned developer but you dont use the command-line often, youre at the right place. This book is for you if you want to know more about Linux, the shell, and if a Mouseless Development Environment sparks your infinite curiosity. Personally, when I discovered it, the spark looked more like an enlightenment! You think Im exaggerating? Yes, I am. But still.
If you already use the command-line intensively and the tools I describe in this book, you might not learn much from it. Im sorry. It breaks my heart more than yours. That said, Building Your Mouseless Development Environment can help you fill the gaps in your knowledge. Buying the book can be a good way to support my work, too; if you like my blog, my GitHub, my style, or my limited charisma. You can still offer this book to some poor souls who still work on Windows, too. Its not that I judge you, Windows developers; I was in your situation for decades. Its just that the grass is greener and tastier on the Linux side of the fence.
What Is a Mouseless Development Environment?
The obvious goal of a Mouseless Development Environment is to use less of the mouse. It doesnt mean that you can throw your mice through your windows. First, because you might kill somebody, second because its not nice to pollute, and third because the mouse is still useful in many cases. Im not dogmatic.
Using the mouse is great for some endeavors, like graphical manipulation, video editing, or musical creation. I wouldnt draw in a terminal like I wouldnt write a book with a brush; it wasnt meant for that.
Im sure you noticed but software engineers deal with a lot of text: we spend our time writing code and (hopefully) documentation. Its for this kind of job that our keyboard and our commands really shine. Text never goes out of trend: you can write scripts to parse them and to automate anything you want, thanks to the Holy Shell. Repeat after me: glory to the Holy Shell!
A Mouseless Development Environment lets you keep your hands on the keyboard most of the time, which is a blessing by itself. Its very comfy not to move your hands to reach your mouse, then your keyboard, then your mouse, in an infinite recursion of pain. Even if you think that it doesnt bother you, youll see the truth by simply trying not to use it. I thought it wasnt a problem for a long time, but trying to stay on the keyboard definitely changed my way of working.
What Do You Need to Follow Along?
To follow this book, you need to have a place to install the whole system and its tools: Arch Linux, URxvt, Neovim, Zsh, tmux, and so on. If you have an empty hard disk, thats a very good container for that. You can also use a virtual machine if you want to see first how it looks, or if you just want to follow the book for learning purposes, without the intention to use the final Mouseless Development Environment.
The good news: even if you finish the book on a virtual machine, youll have a complete installer for the Mouseless Development Environment somewhere on GitHub. Its something well build together, too. You can use it on any standard computer you want, even on a MacBook Pro; tested and approved. If you fall in love with your new shiny environment, as I did, youll be able to install it quickly on a new computer.