A minimal and distraction free Debian Configuration
Tags: linux, debian, bash, productivity
Published: 2019-10-30 15:57:04

A while ago I was sitting at my Windows-based environment. It is heavily used and thus has gotten full to the brink with different tools, clutter, and icons everywhere. I got the feeling that I was too often getting distracted when using that system. There were so many icons everywhere all trying to take my attention. My work-related files and tools and hobbies such as icons for games and youtube videos all in a big mess. I realized that I often had an idea of some coding project when sitting down at the computer but still forgetting about it after reopening my old tabs and "just watch one video". 

I want to be more productive and actually create those hobby projects, I enjoy it myself after just getting going after all. So I came up with an idea that I'd change this and to try to create a system where I can focus. Where the amount of clicks needed to get to e.g. youtube or a game is at least as long or longer than continuing on a project. I wanted something distraction-free and suited for projects and production. While still being able to play a game or browse online when I wanted to. 

To give the full picture I had simultaneously read the book *Exploring the UNIX system by Stephen G. Kochan and Patrick H. Wood* from back to back and was already fascinated by it. It was not my first time introduced to the world of Unix since I'd previously owned both a Mac and used a computer with Ubuntu. But in those systems I had mostly used the GUI features and I felt that after the book I was finally eager to try out the CLI (command-line interface). Come Windows I had also been more and more aware that the system had several limitations. Some DevOps tools were not working properly which would've worked in Linux. I had started feeling that I didn't need much of the clutter and I used Vim mostly for writing anyways (in my windows machine there were many IDEs and text editors). Lastly I started to wonder why so many resources were being hogged from my system. (As a small taste of what's to come, my Windows system usually had over 200 processes at all times, my Linux system has under 10 in most scenarios making it run fast even in a severely limited virtual box). 

So I made the decision to create a minimal and distraction-free environment of my own. I decided to make a system that would mimic the 80's computer system, but still be able to do everything a modern system can do and what modern development requires.

## The idea
I wanted the configuration to do some things:

- Provide me a distraction-free environment
- I should be able to do modern development (mostly)
  - Android/Vue Native, 
  - Web (+Vue), 
  - Bash-scripts, 
  - C/C++
- I should be able to do screen recording 
- I should be able to do administrative tasks
- I should be able to browse the internet
- I should be able to play games (old games is a plus)
- The system should be minimal and feel snappy
- The system should be easily maintained

## The process
The tools I came to use were Debian Linux (with no GUI) as the base. This provided me with a minimal and distraction-free environment right out of the box. But I still didn't know if all my other requirements could be fulfilled. 

I started with administrative tasks. Vim was already bundled but at a minimal configuration, while usable I decided to download *Vim 8* and spend some time on a decent *.vimrc*. I decided to postpone other administrative tasks for later. I downloaded a package manager and I soon had most tools needed for compiling *sass* and doing *vue*. But I still didn't have a way to use windows in the times when these are needed. I used *xinit* but it became bothersome to use that in a single instance. I started to play around with *tmux*, but then got recommended to check out i3wm. I tested it and it was perfect, extremely minimal, highly configurable and still basically running terminals with graphics being pushed to the side or other workspaces. 

I decided to use i3wm, I downloaded firefox and now I could have my project in *Vim* on one side and *firefox* on the other. After getting going so well I downloaded wine-staging and lutris. This did not go completely smooth at the beginning but after some digging around I was able to successfully install everything. I tried some games and it all worked splendidly! I checked if there was also a way to do screen recording and of course OBS exist and can be installed just like most other tools.

Then I thought, now I am able to do most of the things I want to be able to do, just the tools Android/Vue Native Development left. I decided to try to do as much as possible from the terminal. I had a lot of issues with getting the right java to install initially, but after some more digging I found the problems and all was fine. I was now able to do Android/Mobile development as well.

## Result
The Debian configuration project has for me been a success. It provides me a distraction-free environment. I log in and the first I see is a black screen and my different projects from Github right there at my home screen. The environment feels so ridiculously fast and takes no space either. Running the *df* command I can see that the full OS with all tools takes around 6GB. When checking running processes there is at least 1 and maybe 5-10 in normal use. After learning the basics of i3wm it's easy to get around and the system feels like it's making me more productive and use my time as I want to. 

To make it even better I tried my best to also make it easily maintained. I did this by making the installation as automatic as possible. If you want to check out the project you can find it here on Github: https://github.com/Sebbestune/DebConf/tree/6d0b464ab6d0f95d61ad050910bfc0fbc7a6bf46 I hope you will enjoy it and have some fun exploring it! If you want to use this configuration as an inspiration for your own minimal configuration go ahead. If you have some minimal or distraction-free config you want to show me I'd be interested!