An Introduction to Being A Power User

Published on
Authors

One of my favorite activates is to customize my computer and to figure out how to be more proficient with my tools. Becoming a power user can significantly enhance your productivity and efficiency. Customizing your computer can give you a sense of uniqueness, and it can be pretty fun! This blog will be a brief road map on how to get started. I primarily use Linux (and have been for around four years), so most of the information will be based on that. However, most of the information translates well onto MacOS. Windows on the other hand is very different (still worth exploring their equivalents though). If you are looking to actually learn the material then I would highly suggest MIT's Missing Semester Course.

Desktop Setup Figure: My Desktop Setup Showcasing i3, Polybar, Dunst, and Neovim

Definitions: What is a Power User? What is Ricing?

A power user is someone who not only uses software, hardware, or online tools at an advanced level but also leverages its full potential by mastering shortcuts, customizations, and less-known features. They work faster, solve problems more efficiently, and often find ways to automate repetitive tasks.

Ricing is a term that originated from the Unix community, which refers to customizing your computer's appearance and behavior. It is often associated with customizing the look and feel of your desktop environment, terminal, or other software. However, be careful to not get too carried away with it, as it can easily become time-consuming and unproductive.

This guide will focus more on being a power user and being efficient rather than making your computer look good. You don't necessarily need to be a programmer for either of these activities, but most are.

Keybindings

The first step to becoming a power user is to learn and master keybindings. Keybindings are keyboard shortcuts that allow you to perform actions without using the mouse. Almost all software has keybindings, and learning them can significantly increase your productivity.

Learn the keybindings for your browser, text editor, terminal, and other software you use frequently. Of course a lot of applications differ in what keybindings they use, but luckily a lot of them are similar. If you use a program frequently, you'll pick up the keybindings quickly. I recommend starting by learning the keybindings for your operating system, then browser, then other software you frequently use. Here are some common keybindings, however it's up to you to learn more!

General:

  • ctrl + c - Copy
  • ctrl + v - Paste
  • ctrl + x - Cut
  • ctrl + z - Undo
  • ctrl + shift + z - Redo
  • ctrl + s - Save
  • ctrl + a - Select all

Browser:

  • ctrl + t - Open a new tab
  • ctrl + w - Close the current tab
  • ctrl + tab - Switch to the next tab
  • ctrl + shift + tab - Switch to the previous tab
  • ctrl + r - Reload the page

When you start to make your own keybindings, you can use a program like AutoKey to create custom keybindings. I personally use sxhkd which is a simple X hotkey daemon. A lot of desktop environments and tiling window managers (read below) come with a way to set keybindings as well.

Terminals, Shells, and Commands

The terminal is a powerful tool that allows you to interact with your computer using text commands. It is a wrapper program for the shell, which is the command-line interpreter that processes your commands. The terminal is often faster and more efficient than using a graphical user interface (GUI).

Common task such as moving files, searching for files, and installing software can be done more efficiently using the terminal. You likely already have a terminal installed on your computer, such as cmd on Windows, Terminal on macOS, or gnome-terminal on Ubuntu Linux. You will probably be fine using the default terminal, but I'd recommend using a terminal emulator such as Alacritty or Kitty for a better experience.

Your shell is the program that interprets your commands. The most common shells are bash and zsh.

Your task for this section is to learn how to navigate the terminal, learn some basic commands, and learn how to use the shell. Here are some common commands (only on unix systems):

  • ls - List files in the current directory
  • cd - Change directory
  • pwd - Print working directory
  • mkdir - Make a directory
  • rm - Remove a file
  • cat - Concatenate files and print on the standard output

Try to use the terminal for your daily tasks, and when you run into a problem or don't know how to do something, simply search for it. You'll learn a lot faster this way.

Text Editors

A text editor is a program that allows you to create and edit text files. Text editors are often used by programmers to write code, but they can also be used for taking notes, writing blog posts, and more.

You likely have already used a GUI-based text editor, such as Notepad, Visual Studio Code, or Sublime Text. However, modal-based text editors are also something worth looking into. The most popular modal-based text editor is Vim. In Vim, when you type a character, it doesn't necessarily translate to a character being written in your document. Instead, you have these modes: insert, normal, and visual. This allows you to do things like move around without using the arrow keys, delete a word, or copy a line without using the mouse. The main idea is that you spend much more time editing and navigating text than writing it. Learning it will help you become more efficient and help you understand more in-depth how your editors work. It is certainly a steep learning curve, but it is incredibly powerful. Even if you don't end up wanting to use the editor fully, you can still use the keybindings and concepts in other editors.

There are other editors that following this modal editing style, such as Emacs, Kakoune, and Neovim. I would recommend using Neovim as it is a fork of Vim that is more actively developed.

My Neovim Setup Figure: My Neovim Setup

Tiling Window Managers

The next thing to learn is how to use a tiling window manager. A tiling window manager is a window manager that arranges windows in a non-overlapping way. This means that windows are automatically resized and positioned to fill the screen without any gaps. On the other hand, floating window managers allow windows to overlap and be placed anywhere on the screen.

Tiling window managers make full (I wouldn't necessarily say "best") use of your screen real estate and allows you to see all your windows at once. The idea is that if you have one window, it will take up the whole screen, if you have two windows, they will each take up half the screen, and so on. Of course, you can resize the windows to your liking. How the windows are arranged is dependant on the layout you are using. The most common layout is "master/stack" but other common ones are "spiral", "max", etc.

On Linux, tiling window managers replace desktop environments such as GNOME, and as such you need to reimplement some of the features that desktop environments provide. This includes things like notifications,

On linux, I personally use i3 as my tiling window manager, as it is certainly one of the easiest to get started with. There are many others you might enjoy like awesome, xmonad, or bspwm. If you are on macOS, you can use yabai.

I haven't experimented too much with different tiling window managers, but I can't imagine my experience would be too different. However, one downside of i3 is that you can't select a layout or have algorithmic placements of windows. To get around this I use autotiling.

Emulated Spiral Layout With i3 and autotiling Figure: Emulated Spiral Layout With i3 and autotiling

Status Bars

This one might be a bit more optional than the others. Status bars are programs that display information about your system, such as the time, date, battery percentage, open workspaces, and more. Most tilting window managers come with their own status bar, but you can also use a standalone status bar such as Polybar or eww.

Eww Bar Example Figure: Eww Bar Example

Scripting & Miscellaneous

Now is the part where it's a bit more up to you. Whenever you run into a problem or a task that you do frequently, you can try to make a script for it. Of course this means you will need to learning a scripting language and a programming language. I would learn bash for scripting and python for programming.

When making these tools something that will often be helpful is a menu chooser. This is a program that will display a list of options and gives you the output of the option you choose. This is often done with dmenu or rofi (rofi is a lot more than just a menu chooser, though). I use dmenu if I want my options to all be on one line, and rofi if I want them to be on multiple lines.

Dmenu Example Figure: Dmenu Running Programs (called dmenu_run)
Rofi Example Figure: Rofi Emoji Picker

Here are some other things worth looking into:

  • Display Managers: Display managers are what you see when you log in. You can customize these to your liking. The most common one is lightdm. I personally use xinit/startx which is a way to manually start your display server. Basically, instead of having the display manager load up on start, you simply log in to the computer through the terminal, which then runs startx which starts the window manager or desktop environment you have set up.

  • Compositors: Compositors are programs that allow you to add effects to your windows. The most common one is compton. I personally use picom which is a fork of compton.

  • Notification Daemons: Notification daemons are programs that display notifications on your screen. They are often used in tiling window managers to display notifications. The most common one is dunst.

  • File Managers: File managers are programs that allow you to navigate your file system. The most common ones are nautilus, nemo, dolphin, and thunar. I personally use ranger which is a terminal-based file manager.

  • Screenshot Programs: Screenshots are programs that allow you to take screenshots. The most common ones are scrot and maim. Flameshot is also a common choice because it's so extensive.

  • Terminal Multiplexers: Terminal multiplexers are programs that allow you to have multiple terminals in one. The most common ones are tmux and screen. I personally use tmux.

  • Music Players: Music players are programs that allow you to play music. The most common ones are spotify, vlc, and mpv. If you are interested in a command line music player, most people use mpd with ncmpcpp. I personally have my own command line setup with vlc

  • Image Viewers: Image viewers are programs that allow you to view images. The most common ones are feh and sxiv.

  • PDF Viewers: PDF viewers are programs that allow you to view PDFs. The most common one is zathura.

Conclusion

This guide is just a starting point. There are many more things you can do to with your computer to make it your own. If you are on Linux, I would recommend looking into the Arch Wiki for more information. It is a great resource for learning about Linux and Unix systems. I would also recommend looking into r/unixporn for inspiration. There are also plenty of YouTube channels that cover this kind of content.