Hacking Linux OS and Making it Look Futuristic with DWM

Joy AyiteyJoy Ayitey
6 min read

Motivation & Inspiration

Over the past few months, I have been committed to following many senior software engineers like the owner of Inkdrop - Takuya Matsuyama, the owner of LunarVim - Christian Chiarulli, Neovim's core contributor - Tj DeVries and ThePrimeagen. And they seemed to all use Neovim in their dev work. The funny thing is, they move like swift lightning while using these IDEs so I decided to give it a try after using vim for a while and I have come to love neovim so much that I am unable to use any other IDE productively without enabling VIM extensions in it.

Tj DeVries and Christian Chiarulli however always had this weird plain desktop with a topbar sectioned with numbers. It looked very weird becuase they barely used their mice to move around the workspace, it was all keyboard strokes. Imagine that, using vim (which minimizes the use of the mouse by close to 100%) in a window manager that also required very minimal use of the mouse, they were so fast.

I did a little research after realizing what they had in common and came up with this futuristic hack and even added some more tools I use personally.

Install Guide

This script is made for Linux platform-based machines that utilize the aptitude package manager. Maybe some time later, I will consider releasing support for other package managers for Linux.

To install, simply run the folowing command:

curl https://raw.githubusercontent.com/CharaD7/chara-dotfiles/main/install.sh | sh

The document and config follows the structure below:

  • Git installation verification and setup
    • Git configuration on user confirmation
  • Installing NerdFonts
  • Installing and setting up the fish terminal
  • Installing and setting up the tmux terminal
  • Installing and setting up neovim and neovide
  • Installing and setting up dwm

Git

After user permits the setup of git aliases, user will be able to execute several Git commands using abbreviated form or shortcuts.

  • git init is aliased g i
  • git remote add origin is aliased g rao
  • git remote set-url origin is aliased g rso
  • git commit -m {message} is aliased g acm {message}
  • git commit --amend -m {message} is aliased g aca {message}
  • git config --get user.name is aliased g cn
  • git config --get user.email is aliased g ce
  • git checkout main is aliased g con

To view all aliases used, click here


NerdFonts - [Nice ligature fonts]

NerdFonts is a home of great and beautiful wide range of fonts. To give you the best of ligature feel and look, the following fonts were mainly used:

  • Iosevka NerdFont
  • Jetbrains Mono NerdFont

Fish Shell

Fish shell is one of the best shells to use as a developer if VIM is your preferred IDE. It has been made such that there is a mode you can switch to in order to emulate VIM commands, making you the developer super-productive. To learn more about scripting with fish, kindly visit the docs.

The fish config script installs a couple of packages to make your experience with fish seemless:

  • oh-my-fish My fish is not lost :smirk:
  • fisher - A package manager for fish
  • z - A directory jumper that can be installed using fisher
  • powerline-config - A python-based font patcher for terminals
  • bobthefish - A theme for the fish terminal
  • ghq - A repository organizer, very handy when you work with a lot of them and can't structure it easily.
  • exa - A mordern replacement for ls with rich features
  • peco - A fuzzy finder plugin for fish terminal

NB: Go to the fish config's aliases to see which aliases are registered for the fish shell. To emulate vim movement and Visual key bindings, hit the <Escape> key. Hit i to get back into edit mode.

TMUX

tmux.png

tmux is a terminal multiplexer, allowing you to switch between several programs, detach and reattach them in different programs, it proves to be one of the best terminals out there. to know more about it and how to easily navigate your way while using it, see the docs. This repo's tmuxConfig script comes with powerline fonts and a script to run and configure tmux to have the status bar as you see it in the above picture. To know more about the key combinations, I recommend using the section on key moodifiers. However, the setup comes with predefined key bindings you may want to take a look at the tmux conf file.

Neovide - [No nonsense IDE]

neovide.png

Neovide is a no-nonsense, cross-platform graphical user interface for Neovim (an awesome IDE that is open source and seeks to aggresively refactor VIM). Supporting a lot of very cool features, it promises a wonderful future of an extensible, yet, very stable IDE for vimmers like myself. The Neovide graphical user interface though intuitive, does not work on its own, it needs a Neovim init.lua or init.vim file to work and so you may want to consider having that before using this beauty ๐Ÿ˜Ž That said, this nvimConfig comes with some features of Neovide configured to make your experience using the IDE awesome โœจ

Below is a list of the features enabled and how they are used:

  • Ligature Support (enabled by default)
  • Animated Cursor - vim.g.neovide_cursor_animation_length = 0.13 (set to 0.13seconds)
  • Animated Cursor Particles - vim.g.neovide_curosr_vfx_mode = "railgun" (Leave animated particles anytime cursor jumps around)
  • Smooth Scrolling - (enabled by default)
  • Animated Windows - (enabled by default)
  • Transparency - vim.g.neovide_transparency = 0.8 *(you can increase the opacity as you like it)
  • Blurred Floating Windows - vim.g.neovide_floating_blur_amount_x = 4.0 and vim.g.neovide_floating_blur_amount_y = 4.0
  • Emoji Support - (enabled by default)
  • IDE Paddings - vim.g.neovide_padding_[direction] = 10 (substitute [direction] for top, bottom, left and right)

DWM - [Tiling Window Manager]

dwm.png

DWM (Dynamic Window Manager) is a window manager for X. It displays windows in several layouts such as tiled, monocle and floating. It is more convenient to use though requires some work if you need it to look beautiful and want to use your custom keybindings to invoke certain calls or programs. There are several patches available on the suckless site that can be added to the config to suit user's taste.

Configuration files for dwm can be found in your ~/.config/dwm/ directory. In there you should see a scripts folder which contains bar, bubbly, fetch, run.sh and wal scripts. In addition to these, there is the bar_themes directory.


If you want to see the detailed documentation of this setup, kindly use this link

Thank you for reading. Do not hesitate to reach out to me if you have any ideas or suggestions.

31
Subscribe to my newsletter

Read articles from Joy Ayitey directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Joy Ayitey
Joy Ayitey

I am a Blockchain Enthusiast building DApps on Algorand with Reach language. I love working on React Native, NextJs and NuxtJs projects also on the side, as well as ricing dwm.