Skip to main content

Dotfiles

·14 mins

A slight note, these are the entries from my dotfiles repository, all the way from when I initially made my repository for simple vim configuration saves to now, a full-fledged Arch Linux System running the SwayWM. Hope that this article either leaves you with new software to check out or keeps you entertained. P.S. It’s a decently long read :D

What is this repository for? #

This repository initially began as a place to store my .vimrc files, but it’s expanded to contain the configuration files of my entire system, since most configuration files are prefixed by a ., thus the name dotfiles.

This article is split into a bunch of logs, each of which are me logging in my progress with cool tech that I found and decided to add into my system.

Logs #

27/06/2020 #

src: commit link

This repository only really contains my configurations of the .vimrc, maybe I’ll add in my Emacs config once I get the hang of it as well.

19/04/2021 #

src: commit link

I’ve converted to Arch Linux.

I’ve connected bunch of my files required for my configuration into this repository and at this point, the config consists of a large number of applications, and software, ranging from fish to Neovim, to tmux, to Qtile, to DOOM Emacs.

I can probably say that it wouldn’t be too much of a hassle to get my setup back, on a new computer of Arch Linux, with a simple git pull and configure the system back using symlinks at this point.

30/04/2021 #

src: [commit link]

Discovered dotbot. My setup only continues to be easier to set up. At this point, all I need to do in order to set myself back up, would be to execute a simple few lines.

git clone git@github.com:dat-adi/dotfiles.git
cd dotfiles
./install

That’s it! Just three lines to get back a setup worth of config files, efficiency!

07/05/2021 #

src: commit link

Managed to modularize the Qtile config files, splitting up the code into separate managers for each section. Set up starship.rs as my cross-shell prompt, for uniformity in the different shells. Installed colorscripts, enabled them on startup for fun, and added Hollow Knight ASCII art to startup scripts for fm6000 as well. Might work on it later.

Added Rust replacements for various features related to command line.

Alacritty
A blazing fast terminal.
Starship.rs
Cross-shell Prompt.
  • Bat : Replacement for the cat command.
  • Exa : Replacement for the ls command.
  • Ripgrep : Replacement for the grep command.
  • Procs : Replacement for the ps command.

Finally, used the .bash_profile file in order to split up the .bashrc into separate files. Helps in keeping it clean with a separate files for functions and aliases.

I suppose this update arc could be considered to be focused on WM functionality modularization and Rust replacements.

19/05/2021 #

src: commit link

I’ve set up a new homepage for my browser, which is, qutebrowser. It has been inspired from, and is a condensed down version of the dawn homepage by b-coimbra. While I did set out making one for myself, I really did like the dawn version, so, it’s just a simpler version of it.

Custom Dawn Desktop

The required assets for the homepage are present in the browser directory, in the case that you wish to implement them in your browser as well. Along with that, I’ve also placed all the packages that I use in the packages.txt, still need to sort it out into Pacman specific and AUR specific packages.

Keep in the mind that the next few commands are dangerous. I would not recommend running them without prior consideration. An alternative mechanism I would suggest is to use rsync to transfer contents between systems in most cases.

Setting up all the required dependencies for my Arch Linux configuration can now be done with a simple shell script, that takes care of the pacman packages. This record will be updated in the case that I manage to make a version for the yay packages as well.

Here’s the recovery configuration,

git clone git@github.com:dat-adi/dotfiles.git
cd dotfiles
./pac-packages
./install

That should get you to a working system setup without an issue. If the scripts do not execute, check if you’ve given it permissions to act as an executable in the first place. Use chmod 755 filename in that case.

08/10/2021 #

src: commit link

I generally note down things in DOOM emacs nowadays however, so, if there’s not much of an update with respect to the progress I’ve made in life, chances are that I’ve logged some of the progress in there, and I’ll transfer it over here at a later date. Either that, or I’m just really lazy and I haven’t done anything great to update the logbook at all.

As of today, I’ve progressed a bit farther down the glory of the Neovim text editor. So, what have I gotten myself into?

Neovim + Lua + LSP.

I’ve heard about lua support and the LSP integration in Neovim set ups a while back, like all the back when it first came out. But, for whatever reason, I wasn’t quite able to make the time to check it out.

Now, I have, and it’s really cool. I’ve installed the Telescope plugin, and damn, is it good. I’m proceeding towards checking out an LSP as well, and most likely, will be going forward with pyright for python development.

However, this is but a simple discovery of profound technology. The updates to my neovim configuration, should include these changes in the form of documentation (most likely).

update: Yup, I ended up changing my theme, and utilizing LSP. I did end up finding the LSP integration to be really annoying due to the way it displayed the errors. Switching over to the palenightfall theme did wonders to resolving that issue, however, it still does feel a tad bit off, but I suppose that’s just because I’m not used to the way it looks now.

Pale Night Fall

20/01/2022 #

src: commit link

For some odd reason, today, I felt the compulsion to switch my Window Manager to BSPWM, because I really wanted to switch up my workspace after a while. As such, I went online to, well, r/unixporn just to find Saimoomedit’s BSPWM Rice, and considering that it looked really clean, I figured that it was time to fix the configuration that I’ve set up for BSPWM for real.

The amount of stuff I fixed trying to get BSPWM to work however, blows my mind. Referencing saimoo’s rice, I managed to fix a few issues that was really bugging me from the initial days of working with Arch Linux.

MPD
I finally managed to fix mpd, simply by getting rid of the template configuration and actually going through the file, discarding what was not required.
Polybar
Took in Saimoo’s rice, and got it to work! Considering that I don’t play too much attention to the windows, I’ve removed them entirely though.

A few forum answers that helped me out here a bit were,

My LSP configuration in Neovim seems to have completed broken down, so, that’s quite unfortunate, but, that’s something to fix for another day perhaps. Also, I figured that I might as well switch up my wallpaper as well, it’s been a while.

BSPWM Rice

12/02/2022 #

src: commit link

I recall that I mentioned “something to fix for another day” with respect to my Neovim configuration. Well, apparently that day was today. However, even that is slightly inaccurate considering that I spent two days on it. Did I fix it? Well yes, but no.

I’ve kinda fixed it, I still don’t know how to optimally set up my configuration yet. You mention question as to why I say that, and most of the reason is because I decided, on a whim, that it was time for a lua-only mode.

I spent about two days converting my setup into lua. The first morning was all about messing up, with my configuration not making any sense to me, mind you this was still in vimscript at this stage, with the LSP additions at the bottom that made zero sense to day-1 me. The first afternoon was about converting parts of my configuration into lua, and trying to make sense of everything that was happening.

Now, this period of time was promising and features began to start working. The world seemed to finally make sense, and it was time for a full conversion. Proceeding forward, the first evening was about despair and regret, for with the full conversion of my configuration, stuff that made sense to me in the start seemed to make no sense at all.

Why weren’t packages recognized? Why was lua starting to consume itself in self hatred with that hideous indentation? Why did the statue of equality have three entrances for the classes of society despite literally being about equality? Nothing made sense at this stage, and it was an indication to give in to some rest, and so, that’s what I did.

The second morning was quite a bit better, with me finally figuring that you could divide up everything into smaller sections and just modularize the configuration instead of looking at a block of code in hatred. Stuff began to make a lot more sense at this stage and I completely abstracted away the need to look at redundant pieces of configuration such as the plugins and keybinds by filing them into the lua/base directory. Debugging is where stuff got a slightly bit more interesting.

As it turns out, lua doesn’t play very nicely with plugins quite yet, even more so when you use vim-plug, however, I’m a bit too scarred to test out something new, and so I’ve tried to fix the problem within the parameters.

By simply extracting the installed plugin’s lua directory into the root lua directory, the configuration files could access the lua plugins directory now. I’m actually pretty sure that the issue lies with the plugin configuration setup and nothing else honestly, but, maybe that… is for another day.

04/04/2022 #

src: commit link

I’ve got a new laptop, the Lenovo Legion 5!

This also means that I will be required to port my Linux system over to another laptop. Initially, I was a bit uneasy considering that I’ve heard a lot of people mention that dual booting would be a pain with Windows 11, but so far I haven’t faced any issues other than struggling with installing Arch and disk partition management.

The only extra step that I need to take is to enable secure boot before I log on to Windows if I want to play valorant, because that’s apparently a requirement now.

Anyway, a friend of mine recommended Sway/Wayland, and I decided to give it a shot. Verdict? It is smooth as butter. I love the clean interface that it provides, and am still using the default waybar.

Configuration for sway was surprisingly extremely easy, and most of the issues that I’ve faced are actually more due to applications not being able to support wayland. Ahem, Emacs, ahem. (I managed to get that it to work later on.)

Anyway, workarounds were found and the system is very clean. While the new laptop definitely contributed towards some of the charm, Sway was a good decision to make.

Not too much to report, but here’s a view of the rice.

Three Screens

01/11/2022 #

src: commit link

So, It’s been a while. I’ve managed to migrate my dotfiles readme over to my website, which is cool.

Coming to stuff that I ended up discovering/changing up on my system, I’ve updated a few settings.

  • I’ve gone from using fasd to zoxide in my zsh shell.
  • Got rid of the auto-sleeping feature in sway because it had issues with locking the system multiple times.

Additionally, something that I should’ve done a while back is to change up the keybinds in my .tmux.config. Just by converting the <C-b> key to <F1>, tmux is a lot more usable. This was a tip provided to me by the messiah.

I’ve also refactored the authentication for SSH which was throwing out quite the few issues during startup, so now it just asks me for the password every time I wish to commit or access something sensitive rather than only at the startup. Which may seem like a lot of work, but I consider it to be a lot more secure now.

While I haven’t quite changed up my wallpaper or anything, still kinda cool to showcase it.

doomy bois

30/12/2022 #

src: commit link

ThePrimeagen is genuinely a lifesaver. The configuration that I had going for me had some severe issues and was completely broken. TIL that you could actually version your configuration for neovim, and build up a new one without breaking the existing setup. (Of course, git was the backup plan in case even that went wrong)

.
├── init.lua
├── lua
│   ├── v1
│   │   ├── base
│   │   ├── cmp
│   │   ├── init.lua
│   │   ├── lsp.lua
│   │   ├── nvim-treesitter
│   │   ├── nvim-treesitter.lua
│   │   ├── statusbar.lua
│   │   └── treesitter.lua
│   └── v2
│       ├── init.lua
│       ├── packer.lua
│       ├── remap.lua
│       └── set.lua

By versioning the configuration into version 1 and version 2, I was able to work on a new setup entirely, and by following his guiding light, I was able to set up a system that I can finally work with.

This is significantly less convoluted and a lot more modularized. And I always love modularized approaches. And, I’m starting to like LSP too. Please get rid of the sign symbols in your LSP setup, the world is a better place without them.

20/04/2023 #

src: commit link

Guess who got rid of all that versioning from the last update and instead decided that a clean structure for the configuration was of a higher priority?

me.

Now, it’s not like I did it without a reason, right? It definitely wasn’t an impromptu decision forced by mindlessly scrolling through YouTube before finding a new package manager that does stuff ’lazily'.

Moreover, what kind of a man would I be, if I forsook my prided configuration files, with a setup that’s shown how I’ve evolved over time with regards to developing my neovim configuration setup.

…i’m sorry, i’m a slightly delusional man.

But, on the bright side, I did make a commit before creating v3 just in the case that someone preferred using Packer.nvim over Lazy.nvim.

A revamped config directory #

Now, getting to the feature set and improvements that I’ve made to the nvim configuration till date.

  • Replaced Packer with Lazy for a less cluttered configuration setup.
  • Addition of the Vimux plugin for Tmux + Vim integration.
  • Removal of Lspzero to manage all the LSP configuration manually.
  • Better usage of Treesitter capabilities.
  • Removal of packer-based plugins in favor of plugin_config/.
  • Harpoon utility for easier file access.
  • Undotree to get rid of my flaws from eons ago.

But, overall, it’s a much more organized setup with less ambuigity than the last time. The configurations for the plugins are now placed in the plugin_config directory rather than at the root level like what Packer does.

A major help while trying to set up this configuration base was Typecraft’s YT Video. In the case that you wanna see what the configuration setup looks like now, here you go.

.
├── init.lua
├── lazy-lock.json
└── lua
    └── v3
        ├── init.lua
        ├── plugin_config
        │   ├── completions.lua
        │   ├── fugitive.lua
        │   ├── harpoon.lua
        │   ├── init.lua
        │   ├── lsp.lua
        │   ├── mason.lua
        │   ├── telescope.lua
        │   ├── treesitter.lua
        │   ├── undotree.lua
        │   └── vimux.lua
        ├── plugins.lua
        ├── remap.lua
        └── set.lua

I stuck to the name v3 due to nostalgia, but in a more normal case, you’d be calling that core or something similar.

nvim, lazy and lsp

Wireplumber #

One other really cool thing that I’ve come across recently is Wireplumber. This is a super useful utility that aims to replace ALSA, Pulseaudio and JACK, to be an all-in-one solution to audio and video management. It sounds all fancy on paper but does it actually hold up to it’s ambition?

It actually does!

I’ve always had a hard time trying to set up audio configuration for my Arch device and most of the times, I just leave it be as soon as I get speaker output out so that I can listen, but not speak in. My friends on Discord were forced to adjust to my disability on Linux.

However, that changed with Wireplumber since the documentation made it less ambiguous on which to choose and which to use. ALSA or Pulseaudio? No. God no. I uninstalled both of them and reinstalled their Wireplumber-compatible versions. I control them via Wireplumber now, and can monitor where what’s going wrong with the Helvum utility.

helvum