I did previously do an article on Linux, and I figure there might be some people who are interested in seeing the setup I use for myself. As I probably have mentioned a few times before, I only use Linux. The server that this website is served from is running Debian (link opens in a new tab), one of the oldest Linux distributions that is still under active development. It is not THE oldest still in development, that honor goes to Slackware (link opens in a new tab).
However, for this article, I wanted to focus on my every-day normal-use computer at home. I am a bit of a control freak at times, I like to know that everything is just the way I set it up to be, and there is one Linux distribution that is ideal for this, Arch Linux (link opens in a new tab).
Before I go any further, I just want to point out that this is not intended as a guide, nor will I provide any tech support here. This is mostly a "show-and-tell" kind of post, and I hope that if some of my readers are Linux curious, you might be encouraged to explore Linux a bit. However, if you are completely new to Linux, I strongly suggest Ubuntu (once again, new tab) or Linux Mint (which also opens in a new tab). Arch Linux requires a lot more user effort to learn, which is likely to frustrate new users.
Arch Linux is simple, in that it configures nothing for you. If any software come with configurations, it is mostly just default configurations from upstream developers. Arch Linux developers rarely touch software, they just package it. In a lot of cases, default configs is enough to have stuff running, but for specific use cases you are probably going to need to edit configuration files with a text editor. And this is one of the many reasons why I like Arch Linux, nothing happens unless I make it happen, and then only what I specifically configure myself. Installing a program will not make it launch automatically, unless I configure it to do so.
Arch Linux does not come with a graphical desktop, you need to install the one you want. I prefer efficiency over fancy effects. I also happen to love Vim, it is the only text editor I use. Because of this, I don't use a full desktop environment, I don't even have a graphical login on my computer. When my computer boots up, I first get my bootloader, I use systemd-boot.
I like to have the bootloader pop up by default. Next I am presented with the non-graphical login screen. Here you need to actually type in your username, there is no username selection or list. After logging in, my computer is ready to use, although if I want to use graphical programs like a modern internet browser, or play games, I need to start the graphical environment. I use Xorg for that, which has been the default on Linux for a long time. Note that there is a current shift towards Wayland, but I have yet to give it a try. For now, I'm sticking with Xorg, so I just type the command "startx" to launch the graphical environment. I have a configuration file for my user that will launch my preferred window manager along with my preferred configuration for it.
My graphical desktop
I realize that for most people, this is what "setup" means, how their graphical desktop looks. Well this is mine. I use the i3wm, a tiling window manager. When I open a new program, it will be in fullscreen. Should I then open another one, the screen will be split between the two programs. A third program will split the screen again. It can be split horizontally or vertically. There are lots of ways I can arrange my windows.
I don't know how common workspaces are on Windows, but on Linux it's been a common thing for a very long time. I actually have a habit to keep most things on separate workspaces. I have a browser on one, games on another, and usually a terminal window open on a third workspace.
In order to actually open a new program, I use a menu called dmenu. Pressing the configured keyboard shorcut will open the menu at the top of the screen. Then I just need to type in the name of the program I wish to run. As I type, the menu will make suggestions based on what I have typed. I can navigate between the suggestions with the arrow keys. I do not use a graphical menu since I have a rather small selection of programs installed and I know the names of everything I use.
If you're totally unfamiliar with Linux, you might wonder what's the deal with terminal windows. Personally, I prefer to do most stuff in a terminal. I use very few graphical applications. All my file management is done in a terminal. I connect to this web server through the terminal. I write code in the terminal. It just feels more efficient to me. I don't believe the majority of Linux users rely on terminal as much as I do, but I also don't have any numbers to back that up. However, most Linux distributions come with a full desktop environment by default, which is easy to use and includes all the typical software that people except to have at hand. I assume most people stick with that.
Command Line Interface (CLI) seems to be something most people dislike. I can understand that, it takes some effort to understand how it works, learn the commands you need as well as the additional options for such commands. Then you usually need to type out full paths to files and such. However, there are tools, such as autocompletion, which makes this a lot quicker. I would still recommend anyone new to Linux to avoid the terminal if they are unfamiliar with CLI. But if you are somewhat comfortable with Linux and have an understanding of the filesystem organization, then I would definitely suggest to try out the terminal. You would not need to use it for everyday stuff, but having a basic understanding of how to navigate your system with it, and perhaps do some simple system maintenance tasks, will greatly increase your proficiency with Linux.
If I am browsing through my files, I mostly find myself using a program called "ranger", which lets me see the contents of a directory in the terminal. I can navigate through the directories and open files with this. I can also do all the usual stuff like rename files, copy or move files and so on. However, in most cases when I simply want to copy or move a specific file or directory, I tend to rely on just typing out the full command directly.
Web browsing, Steam and games are pretty much just like on any other system, so there's not really much to show there. I use Firefox for web browsing, with a few plugins. One plugin that I am quite fond of is the Vimium plugin. It enables Vim-like keybindings in Firefox, so I can do most browsing with just the keyboard.
These are some of my preferred programs for different tasks:
- Window manager - i3wm
- Status bar - py3status
- Application menu - dmenu
- Web browser - Firefox
- Terminal emulator - urxvt
- Text editor - Vim (gVim with 'relaxed green' theme)
- Video player - smplayer
- System monitor - htop
- Password management - KeePass
- Network management - netctl
- Compositor - compton
- Music player - mplayer in terminal
- PDF viewer - zathura
I do obviously use a lot more programs than what is listed here, but I think the above list sums up the most important programs. I do want to elaborate a bit on the point of text editor. I do primarily use Vim in the terminal, but whenever I expect to do coding, I prefer to switch to graphical Vim (gVim), simply because of all the themes. I really like the 'relaxed green' theme, it puts me in a relaxed, but still focused, state of mind.
I do hope this might have been interesting, and most of all, offer some insight into the vast number of choices you have available on Linux. I didn't start out with this kind of setup, originally I was using a full desktop environment with very little terminal interaction. My love for the terminal was something that grew over time as I became more and more proficient. If you prefer a more traditional desktop, then there are also multiple options to pick from. And for those that find themselves overwhelmed by all the choices, don't worry. Most Linux distributions come with a default setup which you can dive right into, no need to make any choices unless you decide to start changing stuff.
If you read this to the end and you are not using Linux, go download Ubuntu or Linux Mint. You can even try it on your computer without installing anything. All you need is a USB stick and you can test Linux without needing to install it.