Hacking Linux OS and Making it Look Futuristic with DWM
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 aliasedg i
git remote add origin
is aliasedg rao
git remote set-url origin
is aliasedg rso
git commit -m {message}
is aliasedg acm {message}
git commit --amend -m {message}
is aliasedg aca {message}
git config --get user.name
is aliasedg cn
git config --get user.email
is aliasedg ce
git checkout main
is aliasedg 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 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 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
andvim.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 (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.
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.